У меня следующий вопрос. Допустим, у меня есть такой интерфейс
interface Animal<T>{
children: Array<T>
}
теперь я хочу написать метод, который позже примет, например. птица (класс, реализующий Animal). На момент написания метода определение птицы еще не существовало. Также может быть предоставлен экземпляр Shark. Но минимальное требование будет состоять в том, что любой объект, который он получит, будет экземпляром класса, реализующего Animal.
function doSomething(AnAnimal){
//Do something with animal
}
// Implementation with a class that implements Animal
class Bird<T> implements Animal{
children: Array<T>;
color: string;
chirp(){console.log('peep')}
constructor(Color:string){
this.color = Color;
}
}
let tweety = new Bird('yellow');
doSomething(Tweety)
Я надеюсь, что смог объяснить, что я пытаюсь сделать, и у вас есть идея, как я могу решить это в TypeScript.
Animal<Bird>
, если дети должны быть ограниченыBird
. Я думаю, если мы говорим о реальной жизни, это правда! В этом случаеBird
не обязательно должно быть общим, это будет простоclass Bird implements Animal<Bird>
, а дочерние элементы будутArray<Bird>
. 15.11.2018BiggestEnemy
сложно, если только вы не знаете, что кошки едят птиц, так что это будетbiggestEnemy: Animal<Cat>
, например, мы не знаем, какая кошка, но это определенно кошка. 15.11.2018