我在TS游乐场尝试这段代码并遇到了这个奇怪的事情
class Animal {
constructor(public name: string) {
this.name = name;
}
}
class Snake extends Animal {
constructor(name: string, isPoisonous: boolean) {
super(name);
this.isPoisonous= isPoisonous;
}
}
当我在isPoisonous
构造函数中引入Snake
属性时,TS对我大喊'Property 'isPoisonous' does not exist on type 'Snake''
。有趣的是,ES6中的相同内容编译得很好。
答案 0 :(得分:0)
您需要设置访问级别(即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;
}
}