【问题标题】:Access class Type in static function typescript静态函数打字稿中的访问类类型
【发布时间】:2023-03-07 00:23:01
【问题描述】:

我在打字稿中有以下课程:

class Parent {
    static get<T extends Parent>(): T {}
}

函数get 应该返回&lt;T extends Parent&gt; 类型的实例。例如,如果我有一个名为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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2016-06-13
      • 2021-08-13
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多