interface Info{
name:string;
date:string;
address:string;
}
interface PickInfo{
address:string;
}
type Test<T>=T extends PickInfo?string:number;
type Test2=Test<Info>;
//==>type Test2 = string
Test2 显示的是 string 类型,这里T extends PickInfo
不是子集的意思吗?
1
noe132 2021-07-20 23:58:33 +08:00 1
T extends Q ? U : V
的意思是 let a: T = somevalue let b: Q = a 如果 变量 a 能 赋值给 变量 b 没有类型错误则返回 U 否则 V. typescript interface 没有实际类型,是个 ducktype,所以你可以把 (U & V)类型的值赋值给 V 类型的变量 PickInfo 类型的变量可以接收 Info 类型的值,因为 Info 满足 PickInfo 所有的要求。 |
2
chnwillliu 2021-07-21 10:35:27 +08:00 via Android 1
T extends P, 说明 T 类型 是 P 类型的一种,但是 T 类型可能比 P 类型存在更多的类型描述,即所谓 extends 的含义。Cat extends Animal, 但是 Cat 比 Animal 描述更确切,更具体。
|