有没有办法在泛型(<t>)函数/类(Typescript)中获取泛型类型的名称?

时间:2016-04-11 19:56:37

标签: javascript generics typescript

以下是我的功能定义:

getData<T extends Entity> () { }

我目前不接受任何争论。有没有办法让我在运行时将T转换为该类型的字符串名称?也许使用typeof?

我来自C#世界,您将使用反射。但是,我是Javascript的新手,不知道等效的是什么。

感谢。

1 个答案:

答案 0 :(得分:4)

在编译期间会删除类型,所以没有。你应该从不 永远 有一个通用函数,它不会在参数位置使用它的类型参数。

假设getData适用于类,您可以编写如下内容:

class NotSureThisIsReallyAGoodIdea {
    static getData<T>(cls: new(...args: any[]) => T): T {
        /* magic happens */
        const url = 'http://example.com/' + cls['name'];
        return <T>undefined;
    }
}

class SomeShape {
    x: number;
}

let s = NotSureThisIsReallyAGoodIdea.getData(SomeShape);
s.x; // OK