是否可以在打字稿中获取泛型类型参数的名称。
有这个方法。
getName<T>(): string {
.... use some operator or something
}
像这样使用它
class MyClass{
}
getName<MyClass>(); ///=> should return 'MyClass'
我尝试过使用https://www.npmjs.com/package/ts-nameof https://www.npmjs.com/package/ts-nameof但它不起作用。
Doing
const name = nameof<T>();
fails
或者也许还有另一种方法可以实现这一目标?
你不能,仅凭打字稿不行。 Typescript 只将 Typescript 编译为 javascript。 Javascript 没有类似泛型类型的东西,所以:
getName<MyClass>();
被编译为
getName();
当然,您不期望相同的结果会产生不同的结果getName()
没有参数。
您需要一些东西来生成更多代码才能执行此操作,或者向您的函数添加一个参数:
function getName<T extends new (...args: any[]) => any>(clazz: T): string {
return clazz.name;
}
class MyClass{
}
getName(MyClass);
它只能与运行时存在的类一起使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)