我正在寻找基于泛型类型创建对象,但无法弄清楚语法。我想要的就像这个人为的例子:
myfunc<T>() : T[] {
let obj = new T();
let obj2 = new T();
return [obj, obj2];
}
new T()
当然不会编译。在C#中,我添加一个where T : new
约束来使其工作。 TypeScript中的等价物是什么?
答案 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
是一种类型,将被推断为构造的结果。