【问题标题】:Access class Type in static function typescript静态函数打字稿中的访问类类型
【发布时间】:2023-03-07 00:23:01
【问题描述】:
我在打字稿中有以下课程:
class Parent {
static get<T extends Parent>(): T {}
}
函数get 应该返回<T extends Parent> 类型的实例。例如,如果我有一个名为NewParent 的类扩展了Parent 类,那么get 函数应该返回一个NewParent 类型的对象。如何消除这个占位符 T 并将返回类型分配为被覆盖的类?
【问题讨论】:
标签:
javascript
typescript
【解决方案1】:
以下答案摘自this article about obtaining a class name at runtime。
你可以解压构造函数找到实例的名称,它与继承一起工作,如下所示:
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();
var y = new AnotherClass();
alert(Describer.getName(x)); // Example
alert(Describer.getName(y)); // AnotherClass