15
Как я могу объявить тип class
, так что я гарантирую, что объект является конструктором общего класса?Тип конструктора классов в машинописном тексте?
В следующем примере, я хочу знать, какой тип я должен дать AnimalClass
так, чтобы он мог быть либо Penguin
или Lion
:
class Animal {
constructor() {
console.log("Animal");
}
}
class Penguin extends Animal {
constructor() {
super();
console.log("Penguin");
}
}
class Lion extends Animal {
constructor() {
super();
console.log("Lion");
}
}
class Zoo {
AnimalClass: class // AnimalClass could be 'Lion' or 'Penguin'
constructor(AnimalClass: class) {
this.AnimalClass = AnimalClass
let Hector = new AnimalClass();
}
}
Конечно, class
тип не работает, и это было бы все равно.
Я просто хотел бы добавить, что это решение не работает для меня, и не будет работать, если вы хотите использовать конструктор, который принимает ненулевое число аргументов. Взял меня навсегда, чтобы понять, почему этот пример работает, но мой код этого не сделал. То, что я нашел после нескольких часов поиска, было использовать «AnimalClass: typeof Animal». Это будет работать для динамической загрузки подклассов данного класса. – pixelpax
@pixelpax Вы можете определить конструктор ненулевых аргументов следующим образом: 'new (... args: any []): Animal' – Sammi
@Sammi, Спасибо, ваше решение имеет смысл. Для меня использование 'typeof Animal' для обозначения« типа любого подкласса Animal »работало очень хорошо и выглядит описательно в коде. – pixelpax