我正在使用TypeScript中的一个接口来定义一个函数,该函数只在扩展基类的一些类上可用.这是我到目前为止的代码的简化版本:
class Animal {
}
interface IWalkingAnimal {
walk(): void;
}
class Dog extends Animal implements IWalkingAnimal {
}
class Cat extends Animal implements IWalkingAnimal {
}
class Snake extends Animal {
}
private moveAnimal(animal: Animal) {
if (animal instanceof Cat || animal instanceof Dog) {
animal.walk();
}
}
现在的问题是,我将添加更多的"行走"动物,这样moveAnimal功能将变得太大,无法管理.我想做的是这样的:
private moveAnimal(animal: Animal) {
if (animal implements IWalkingAnimal ) {
animal.walk();
}
}
然而,"implements"判断不起作用,在使用接口时,我找不到与"instanceof"等效的选项.在Java中,"instanceof"的使用似乎可以在这里使用,但TypeScript不允许这样做.
TypeScript中存在这样的东西吗,或者这里有更好的方法吗?我使用的是打字脚本1.8.9.