2016-09-26 7 views
0

У меня есть следующий класс в машинописи:доступа Тип класса в статической функции машинописи

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

Функция get должна возвращать и экземпляр типа <T extends Parent>. Например, если у меня есть класс, называемый NewParent, который расширяет класс Parent, тогда функция get должна возвращать объект типа NewParent. Как удалить этот заполнитель T и присвоить тип возвращаемого значения как переопределенный класс?

ответ

0

Следующий ответ взято из 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 
Смежные вопросы