问一个泛类型的继承判断问题?

type xin = {age:number,name:string}
type ab = {name:string}
type hd = ab extends xin ? true :false

为毛这里hd是false?
不可以继承吗?

阅读 1.4k
2 个回答

xin extends ab才是true

ts中A extends B?的意思可以理解为A类型的变量是否可以赋值给B类型的变量,或者是访问B类型变量的地方能否替换为A类型变量。
所以你的代码可以这么理解,假设有两个变量let vab: ab = { name: 'a' }; let vxin: xin = { age: 18, name: 'x' };,vab显然不可以赋值给vxin,因为vab不满xin的约束条件,但是vxin满足ab的约束条件,所以xin extends ab是true,vinx可以赋值给vab。

推荐问题