为说明我的问题,我将代码简化如下:
class Animal {}
class Cat extends Animal {
talk() {
console.log('meow')
}
}
class Tiger extends Animal {
talk() {
console.log('roar')
}
}
所以这段代码是这样的:
const cat = new Cat()
cat.talk() // outputs meow
const tiger = new Tiger()
tiger.talk() // outputs roar
但是,如果这样做,我显然会遇到问题,因为该方法不存在:
const animal = new Animal()
animal.talk() // error
我希望所有动物都有一种说话方法,但是我不想在Animal类中定义一个说话方法,因为我不知道任何特定动物会发出什么样的声音。例如,我不能说所有动物都在基类中吠叫。
关于如何处理此问题的任何想法?谢谢
答案 0 :(得分:1)
我希望所有动物都拥有一种说话方法,但我不想在Animal类中定义一个方法
在Typescript 1.6或更高版本上,您可以将Animal
类定义为抽象类,如下所示:
abstract class Animal {
abstract talk(): void;
}
如果您不想将Animal
定义为完全抽象,则只需为其提供一个抽象方法:
class Animal {
abstract talk(): void;
}