Как получить общий класс <t> имя машинописного текста?
Мой общий класс
export class BaseService<T> {
public subUrl;
constructor(public repo:RepogitoryService) { }
}
Как сохранить имя класса T в локальной переменной?
Ответ 1
Вы должны понимать, что Typcript - это просто транспилятор (компилятор для javascript). Некоторые синтаксические сахара (например, дженерики) работают только на этапе проверки типов (а также полезны для intellisense в вашем IDE/текстовом редакторе).
Однако присваивание переменной происходит во время выполнения, во время выполнения это просто простой Javascript. Во время выполнения нет типов и никаких дженериков.
Но здесь самый простой способ сделать это:
class Some<T> {
private TName : string;
constructor(x : T&Function) {
this.TName = x.name;
}
}
class Another {
}
const some = new Some<Another>(Another);
Ответ 2
Вы не можете, к сожалению. Typescript является статическим средством проверки типов и не поддерживает отображение типов во время выполнения, как это делает Java. Это потому, что его источники перенесены в Javascript.
Тем не менее, есть надежда на такую поддержку в будущем, благодаря новой функции машинописи, которая называется "настраиваемые преобразователи". Эти трансформаторы - это плагины, которые подключают процесс переноса, открывая дорогу к богатым возможностям, связанным с отражением типа. Первый пример этого - ts-transformer-keys.
Ответ 3
Обходное решение durisvk10 охватывает тему, просто хочу добавить, что я бы предпочел использовать x: new() => T чем x: T&Function.