TypeScript 4.1中引入了rest参数的数组和条件递归类型。
function sum(...numbers: number[]) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 输出 6
console.log(sum(4, 5, 6, 7)); // 输出 22
在上面的例子中,sum
函数使用rest参数语法接收任意数量的参数,并将它们存储在numbers
数组中。函数内部使用数组的reduce
方法对参数进行求和。
type Flatten<T> = T extends Array<infer U> ? Flatten<U> : T;
type Numbers = [1, [2, [3, [4, 5]]]];
type Flattened = Flatten<Numbers>; // 类型为 [1, 2, 3, 4, 5]
在上面的例子中,我们定义了一个Flatten
类型,它接受一个类型T
作为参数。如果T
是一个数组类型(使用extends Array<infer U>
进行判断),则递归地调用Flatten
类型,并将数组中的元素类型作为参数。如果T
不是数组类型,则返回T
本身。
在这个例子中,我们定义了一个Numbers
类型,它是一个嵌套数组类型。使用Flatten
类型将Numbers
类型展开为单层的数组类型[1, 2, 3, 4, 5]
。
这样的条件递归类型可以在很多场景下使用,比如处理嵌套的对象结构或者数组结构。
关于 TypeScript 4.1中的rest参数的数组和条件递归类型的详细信息,可以参考腾讯云官方文档中的相关章节:
领取专属 10元无门槛券
手把手带您无忧上云