TypeScript从通用类型创建对象

石像鬼

我正在寻找基于泛型类型的对象,但无法弄清楚语法。我想要的是这样的示例:

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

    return [obj, obj2];
}

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

丹尼尔

您必须记住,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该类型将作为构造结果而推断出来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章