使用TypeScript将数组传递给spread运算符参数

时间:2017-01-09 20:24:28

标签: arrays typescript

我有一个继承自Array的类:

class List<T> extends Array<T> {
    constructor(items: T[]) {
        super(items); // error here...
    }
}
  

类型'T []'的参数不能分配给'T'类型的参数。

假设这是因为Array的构造函数需要(...... items:T [])

那么,如何将标准数组传递给采用扩展运算符的东西?

1 个答案:

答案 0 :(得分:1)

Array Constructor接受任意数量的参数。如果将数组传入new Array(),则会将其分配给第一个索引。

const newArray = new Array([1, 2, 3]);
console.log(newArray); // [[1, 2, 3]];

使用spread运算符将数组扩展为参数。

const newArray = new Array(...[1, 2, 3]); // equivalent to new Array(1, 2, 3);
console.log(newArray); // [1, 2, 3];

所以你的课程看起来像这样:

class List<T> extends Array<T> {
    constructor(items: T[]) {
        super(...items); // Spread operator here
    }
}