Я использую extends
ограничение в машинопись, например, так:Машинопись «расширяет» родовое ограничение
class Animal {}
class Lion extends Animal {}
class Bear extends Animal { }
class ZooKeeper<T extends Animal> {
constructor(p: T = new Animal()) {
}
}
new ZooKeeper(new Animal());
Но p: T = new Animal()
содержит ошибку:
Type 'Animal' is not assignable to type 'T'.
constructor Animal(): Animal
Почему, и что мне делать , чтобы я мог использовать Animal
, вместо Animal
подтипов?
Это не решит проблему - если вы посмотрите на испущенную JS, вы увидите, что p: T = new Animal() испускает экземпляр по умолчанию (из Animal), где он не был предоставлен. Ваша реализация не сделает этого! – series0ne
Я посмотрел на вывод JS, вы правы, есть разница. Я не понял ваш вопрос полностью, извините. – ther
Нет проблем. Вся часть кривой обучения, мой друг. Если вы обновите свой ответ, чтобы включить мои комментарии, я удалю downvote. – series0ne