Как использовать тип класса в качестве типизированной переменной? (Машинопись) - PullRequest
0 голосов
/ 25 мая 2020

Допустим, у вас есть интерфейс, а затем классы, которые его реализуют.

interface A { /*do stuff*/ }

class B implements A { /*do stuff*/ }

class C implements A { /*do stuff*/ }

Тогда, если у вас есть переменная, которая может хранить тип класса, а не конкретный c экземпляр объекта, что вы указываете в качестве типа?

let x: Something = B; // or C

Я знаю, что для объектов вы можете использовать typeof, но для интерфейсов - нет. Однако я могу указать переменные для хранения реализаций интерфейсов, поэтому я не понимаю, почему я не могу хранить классы интерфейса.

1 Ответ

1 голос
/ 25 мая 2020

Вы можете использовать подпись конструктора (похожую на подпись функции, но с new перед ней):

interface A { /*do stuff*/ }

class B implements A { /*do stuff*/ }

class C implements A { /*do stuff*/ }


let x: new () => A = B;
let x2: new () => A = C;

Ссылка на игровую площадку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...