扩展运算符Typescript的构造函数重载

时间:2016-03-20 13:21:04

标签: typescript

我正在尝试重载TypeScript Class

的构造函数
constructor(a: T[])
constructor(...a: T[]) {
    a.forEach(e => {
        //do something with e
    });
}

为什么编译器会抱怨上述内容?以及如何解决它的任何想法?

1 个答案:

答案 0 :(得分:3)

提供的代码段不是类。假设它实际上是在课堂上包装的。这应该正常工作(也在运行时):

class A<T> {
    constructor(a: T[]); // first overload
    constructor(...a: T[]); // second overload
    constructor(a) { // implementation (should implement all overloads)
        a = arguments.length === 1 ? a : Array.prototype.slice.call(arguments); 
        a.forEach(e => {
            //do something with e
            console.log(e);
        });
    }
}

var strings = new A<string>(['a']);
var numbers = new A<number>(1, 2, 4);

Handbook中阅读更多内容。