3道easy的ts类型体操

127 阅读1分钟

1.first of array

接受一个数组,并返回它的第一个元素的类型。

要求:接受非数组的类型会报错。空数组返回never。

1..png

先限制T类型为数组。

如果属于[ ]的子类型,则代表是空数组,返回never。否则返回第一项。

2.length of tuple

接受一个readonly的数组,返回这个数组的长度。

1..png

readonly any[ ]表示限制为readonly,且为数组。

本身有属性'length',代表长度。所以T['length']即可。

3.exclude

从联合类型T中排除U的类型成员,来构造一个新的类型。

在这之前,我们可以先了解1个前置知识:ts的分发特性。

1..png

泛型,触发分发。

B是联合类型的话,A的结果为B中的每一个成员,分别进行三元运算后,组成的联合类型。

而exclude的参数中,恰好有联合类型。

1..png

这里T为联合类型,触发分发,依次看T的每一个成员。

如果在U中,则直接never忽略,否则即为T自身(这里的T为T的每一个成员)。