类型合并
type aType = { a: string, c: boolean }
type bType = { b: number, c: boolean }
// 合并类型,使用&进行类型的合并
type cType = aType & bType
const cs: cType = {
a: 'sss',
b: 123,
c: true
} // 无报错
同名属性合并问题
合并类型中存在同名属性时,若该同名属性类型一样,则取相同值,若同名属性类型不一致,合并后该属性为never
type aType = { a: string, c: string }
type bType = { b: number, c: number }
type cType = aType & bType
const cs: cType = {
a: 'sss',
b: 123,
c: 'sss', // error (property) c: never
c: 123 // error (property) c: never
}
报错信息
合并后的c类型应该是 string & number,不存在这种类型,即为never
网友评论