子级定义变量的抽象类

时间:2019-02-07 19:28:00

标签: typescript

我想使用TypeScript abstract class,并强制实现在它可以使用的类中定义函数/变量。

abstract class Animal {
  sound: string;
  speak() {
    console.log(this.sound);
  }
}

class Cat extends Animal {
  sound = 'meow';
}

const c = new Cat()
c.speak()

sound应该是Cat的必需属性,并且还将继承Animal的speak

像这样可能吗?

是的,即使在此示例中它并不明显,我也需要abstract class

2 个答案:

答案 0 :(得分:0)

您可以在Animal中定义抽象属性abstract sound: string,以便Cat必须实现它:

abstract class Animal {
  abstract sound: string;
  speak() {
    console.log(this.sound);
  }
}

example

答案 1 :(得分:-1)

您可以将abstract添加到属性中,这将允许在继承的类中对其进行定义。

abstract class Animal {
  abstract sound: string;
  speak() {
    console.log(this.sound);
  }
}

class Cat extends Animal {
  sound = 'meow';
}

const c = new Cat()
c.speak()