Typescript: доступ к stati c членам класса без его создания из массива сигнатур конструктора - PullRequest
1 голос
/ 06 августа 2020

У меня есть следующий код:

class Parent {
   public static message: string;
}

class FirstChild extends Parent {
   public static message: string = "Hello from first child";
}

class SecondChild extends Parent {
   public static message: string = "Hello from second child";
}

const children: (new() => Parent) = [FirstChild, SecondChild];
console.log(children[0].message); // tsc error: property does not exist

Я получаю эту ошибку:

сообщение свойства не существует для типа new () => Parent

что имеет смысл, потому что тип относится только к сигнатуре конструктора.

Мой вопрос: какой тип я использую для описания массива с сигнатурами конструктора классов, расширяющихся от родительского элемента + stati c атрибутов этого родителя?

1 Ответ

1 голос
/ 06 августа 2020

Каждый раз, когда вы хотите сослаться на объект класса, а не на экземпляр, вы хотите использовать:

typeof MyClass

Это означает, что вместо этого вам нужен массив typeof Parent:

const children: (typeof Parent)[] = [FirstChild, SecondChild];
console.log(children[0].message); // string

Детская площадка

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