跟着小满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
类型兼容的主旨就是为了保证类型安全。