在TypeScript

时间:2019-05-02 10:06:48

标签: javascript typescript

一个简单的例子来说明我的问题:

class Animal {
  foo() {
    console.log(this.bar);
  }
}

class Dog extends Animal {
  bar: string;
  constructor() {
    super();
    this.bar = "bar";
  }
  test() {
    this.foo();
  }
}

new Dog().test();

TypeScript错误:

  

属性“ bar”在“动物”类型上不存在。ts

我了解需要在bar类中声明Dog属性,但是TypeScript也希望我在Animal类中声明它。这是预期的吗?继承时,是否需要从Child-> Parent类复制属性声明?

1 个答案:

答案 0 :(得分:0)

  

在继承时,是否需要从Child->父类复制属性声明?

不。将bar移至Animal类。

或使用Typeguard:

 if(this instanceof Dog)
   console.log(this.bar);