跟着小满zs 学习 ts,原文:学习TypeScript进阶类型兼容_typescript进阶阶段类型兼容 小满-CSDN博客
类型兼容,就是用于确定一个类型是否能赋值给其他的类型。如果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 = b // 协变 B是A的子类型,所以可以赋值
let fnA = (params: A) => {
}
let fnB = (params: B) => {
}
fnB = fnA // 逆变 A的类型化少 B的类型化多,所以可以赋值
fnA = fnB // 双向协变 需要开启 --strictFunctionTypes: false
类型兼容的主旨就是为了保证类型安全。