我在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();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,问题是我将添加更多"行走"动物,因此moveAnimal功能将变得太大而无法管理.我想做的是这样的事情:
private moveAnimal(animal: Animal) {
if (animal implements IWalkingAnimal ) {
animal.walk();
}
}
Run Code Online (Sandbox Code Playgroud)
但是'implements'检查不起作用,我在使用接口时找不到'instanceof'的等价物.在Java中,似乎使用'instanceof'可以在这里工作,但TypeScript不允许这样做.
TypeScript中是否存在这样的东西,或者这里有更好的方法吗?我使用的是TypeScript 1.8.9.
typescript ×1