【TypeScript】类型兼容(协变、逆变和双向协变)

作者 : admin 本文共421个字,预计阅读时间需要2分钟 发布时间: 2024-06-16 共3人阅读

跟着小满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

【TypeScript】类型兼容(协变、逆变和双向协变)插图

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

本站无任何商业行为
个人在线分享 » 【TypeScript】类型兼容(协变、逆变和双向协变)
E-->