@@ -39,7 +39,7 @@ type B = {
|
||||
|
||||
- `prop`:属性名变量,名字可以随便起。
|
||||
- `in`:运算符,用来取出右侧的联合类型的每一个成员。
|
||||
- `Keyof A`:返回类型`A`的每一个属性名,组成一个联合类型。
|
||||
- `keyof A`:返回类型`A`的每一个属性名,组成一个联合类型。
|
||||
|
||||
下面是复制原始类型的例子。
|
||||
|
||||
@@ -237,7 +237,7 @@ type A<T> = {
|
||||
};
|
||||
|
||||
// 等同于
|
||||
type B<T> = {
|
||||
type A<T> = {
|
||||
readonly [P in keyof T]?: T[P];
|
||||
};
|
||||
```
|
||||
|
||||
@@ -376,7 +376,7 @@ type T2 = RegExp extends Animal ? number : string;
|
||||
|
||||
上面示例中,`Dog`是`Animal`的子类型,所以`T1`的类型是`number`。`RegExp`不是`Animal`的子类型,所以`T2`的类型是`string`。
|
||||
|
||||
一般来说,调换`extends`两侧类型,会返回相反的结果。举例来说,有两个类`Dog`和`Animal`,前者是后者的子类型,那么`Cat extends Animal`就为真,而`Animal extends Cat`就为伪。
|
||||
一般来说,调换`extends`两侧类型,会返回相反的结果。举例来说,有两个类`Cat`和`Animal`,前者是后者的子类型,那么`Cat extends Animal`就为真,而`Animal extends Cat`就为伪。
|
||||
|
||||
如果需要判断的类型是一个联合类型,那么条件运算符会展开这个联合类型。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user