我在TS操场上尝试了这件代码,并遇到了这个奇怪的东西
class Animal {
constructor(public name: string) {
this.name = name;
}
}
class Snake extends Animal {
constructor(name: string, isPoisonous: boolean) {
super(name);
this.isPoisonous= isPoisonous;
}
}
我在Snake
构造函数中引入了isPoisonous
属性,对我说'Property 'isPoisonous' does not exist on type 'Snake''
。有趣的是,ES6中的同一件事可以很好地编译。
您需要设置访问级别(IE public
),以将某些内容设置为类变量,而不是仅针对构造函数的参数。因此,在值解决您的问题之前添加public
。
也就是说,从时尚的角度来看,最好是转发这些属性:
class Animal {
public name : string;
constructor(public name: string) {
this.name = name;
}
}
class Snake extends Animal {
public isPoisonous : boolean;
constructor(name: string, isPoisonous: boolean) {
super(name);
this.isPoisonous = isPoisonous;
}
}