Typescript 中的逆变与协变

Typescript 中的逆变与协变

概念:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型 。 泛型类型参数支持协变和逆变,可在分配和使用泛型类型方面提供更大的灵活性。

一、typescript 协变

示例

type parent = string|number|boolean

type child = string|boolean

type test = child extends parent ? true:false
// test 的类型是true
let a:child = true;
let b:parent = 1;
a = b; // 报错 Type 'number' is not assignable to type 'child'.
b = a; // 不报错

结论: 如图中代码所示 child类型可以继承parent类型(child 为 parent的子类) 当我们创建两个变量 a = true、b = 1并且分别赋给它们child和parent类型的时候。如果这这时想把b赋值给a,就会报类型错误(Type ‘number’ is not assignable to type ‘child’.),说child里面没有

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值