以下是我的功能定义:
getData<T extends Entity> () { }
我目前不接受任何争论。有没有办法让我在运行时将T转换为该类型的字符串名称?也许使用typeof?
我来自C#世界,您将使用反射。但是,我是Javascript的新手,不知道等效的是什么。
感谢。
答案 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