我可以确定泛型类型吗T
在以下场景中?
class MyClass {
constructor() {
}
GenericMethod<T>(): string {
return typeof(T); // <=== this is flagged by the compiler,
// and returns undefined at runtime
}
}
class MyClass2 {
}
alert(new MyClass().GenericMethod<MyClass2>());
由于类型在编译期间被擦除,因此在代码运行时它们不可用。
这意味着你必须做一个小的重复......
class MyClass {
constructor() {
}
GenericMethod<T>(targetType: any): string {
return typeof(targetType);
}
}
class MyClass2 {
}
alert(new MyClass().GenericMethod<MyClass2>(MyClass2));
在这种情况下,你最终会得到答案function
,但你可能想要MyClass2
.
我写了一个如何在 TypeScript 中获取运行时类型名称的示例 https://www.stevefenton.co.uk/Content/Blog/Date/201304/Blog/Obtaining-A-Class-Name-At-Runtime-In-TypeScript/,看起来像这样:
class Describer {
static getName(inputClass) {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec((<any> inputClass).constructor.toString());
return (results && results.length > 1) ? results[1] : "";
}
}
class Example {
}
class AnotherClass extends Example {
}
var x = new Example();
alert(Describer.getName(x)); // Example
var y = new AnotherClass();
alert(Describer.getName(y)); // AnotherClass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)