Unshift
挑战
实现类型版本Array.unshift()
。
例如:
type Result = Unshift<[1, 2], 0>; // [0, 1, 2]
解答
这个挑战和Push challenge有很多相似之处。在这里,我们使用可变元 组类型(Variadic Tuple Types)来获取数组中的所有元素。
这里我们做的差不多,但顺序不同。首先,让我们从传入的数组中获取所有元素:
type Unshift<T, U> = [...T];
在这段代码中,我们得到了编译错误“A rest element type must be an array type”。让 我们通过在类型参数上添加一个约束来修正这个错误:
type Unshift<T extends unknown[], U> = [...T];
现在,我们有了与传入的数组相同的数组。我们只需要在元组的开头添加一个元素。让我们 这样做:
type Unshift<T extends unknown[], U> = [U, ...T];
这样,我们在类型系统中创建了一个“unshift”函数!
评论