打字稿中的泛型 - 未定义的T

时间:2015-11-13 04:32:31

标签: javascript generics typescript

在Typescript的泛型中遇到问题,其中类型在泛型函数或类的范围内未定义。我找不到任何关于此的文档,虽然我认为它是设计的。有没有办法实现我想要的,安全输入?

function test<T>() {
    return new T();
}

class TestClass<T> {
    public build(): T {
        return new T();
    }
}

播放链接:

http://www.typescriptlang.org/Playground/#src=function%20test%3CT%3E()%20%7B%0A%09return%20new%20T()%3B%0A%7D%0A%0Aclass%20TestClass%3CT%3E%20%7B%0A%09public%20build()%3A%20T%20%7B%0A%09%09return%20new%20T()%3B%0A%09%7D%0A%7D%0A

1 个答案:

答案 0 :(得分:2)

TypeScript泛型(与C#等其他语言不同)仅限编译时。因此,您不能在运行时位置中使用它们,例如new T

  

有没有办法实现我想要的,安全地输入

明确传递构造函数 。例如

class TestClass<T> {
    public build(x:{new ():T}): T {
        return new x();
    }
}

此处x:{new ():T}我说xnew调用T的实例。{/ 1}}。