TypeScript从泛型类型创建对象

时间:2018-06-13 18:20:36

标签: typescript

我正在寻找基于泛型类型创建对象,但无法弄清楚语法。我想要的就像这个人为的例子:

myfunc<T>() : T[] {
    let obj = new T();
    let obj2 = new T();

    return [obj, obj2];
}

new T()当然不会编译。在C#中,我添加一个where T : new约束来使其工作。 TypeScript中的等价物是什么?

1 个答案:

答案 0 :(得分:4)

您必须记住,TypeScript类型(包括泛型)仅在编译时存在。此外,在JavaScript中,构造函数与它构造的对象的类型不同。

您可能正在寻找类似的东西(假设您的构造函数采用零参数):

function foo<T>(C: { new(): T }): T[] {
    return [new C(), new C()];
}

class SomeClass {}

// here you need to pass the constructor function
const array = foo(SomeClass);

在那里,C是您将在运行时使用的构造函数,T是一种类型,将被推断为构造的结果。