【问题标题】:Generics in Typescript - Undefined TTypescript 中的泛型 - 未定义的 T
【发布时间】:2015-11-13 12:33:37
【问题描述】:

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

【问题讨论】:

标签: javascript generics typescript


【解决方案1】:

TypeScript 泛型(与 C# 等其他语言不同)仅在编译时使用。所以你不能在 runtime 位置 使用它们,例如new T

有没有办法实现我想要的,类型安全

显式地传递构造函数。例如

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

这里x:{new ():T} 我是说x 是当用new 调用时会给出T 的一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2019-02-02
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多