类型兼容,就是用于确定一个类型是否能赋值给其他的类型。如果A要兼容B 那么A至少具有B相同的属性。
简单来说就是为了保证类型安全。
// 主类型
interface A {
name: string,
age: number
}
// 子类型
interface B {
name: string,
age: number,
sex: string
}
let a: A = {
name: "睁眼看世界",
age: 18
}
let b: B = {
name: "她都显怀了你还没释怀",
age: 18,
sex: "男"
}
// a 的类型是少的 所以把多的类型给少的 一定能保证 a 的类型都有赋值 是安全的
a = b // 协变 B是A的子类型,所以可以赋值
let fnA = (params: A) => {
}
let fnB = (params: B) => {
}
// 这里函数参数传值 调用哪个函数 哪个函数就需要接收值
// 而接收的值一定是类型多的 这样才能保证新的 少的参数赋值后 的每一个参数类型安全
fnB = fnA // 逆变 A的类型化少 B的类型化多,所以可以赋值
fnA = fnB // 双向协变 需要开启 --strictFunctionTypes: false

类型兼容的主旨就是为了保证类型安全。

564

被折叠的 条评论
为什么被折叠?



