一个简单的例子来说明我的问题:
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类复制属性声明?
答案 0 :(得分:0)
在继承时,是否需要从Child->父类复制属性声明?
不。将bar
移至Animal
类。
或使用Typeguard:
if(this instanceof Dog)
console.log(this.bar);