如果我的基类包含这部分代码:
export default class OnScreenObject {
constructor({ xPosition, yPosition }) {
this.xPosition = xPosition;
this.yPosition = yPosition;
}
draw() {
this.ctx.translate(
this.xPosition + this.width / 2,
this.yPosition + this.height / 2,
);
}
我的子类构造函数包含以下部分代码:
export default class Zombie extends OnScreenObject {
constructor({ xPosition, yPosition }) {
super({ xPosition, yPosition });
this.width = 15;
this.height = 15;
}
然后draw函数可以但VS Code中的打字稿检查器(我正在使用JS,而不是打字稿!)说:
Property 'width' does not exist on type 'OnScreenObject'.
这很有意义。
是我做错了代码,还是在某些问题上感到困惑,或者打字稿是书呆子?
答案 0 :(得分:0)
也许我遗漏了一些东西,但是 OnScreenObject 类似乎缺少对所需属性的声明( x / yPosition ,宽度,< strong> height )。似乎添加声明应该可以解决问题。
class OnScreenObject {
protected xPosition: number;
protected yPosition: number;
protected width: number;
protected height: number;
constructor({ xPosition, yPosition }) {
this.xPosition = xPosition;
this.yPosition = yPosition;
}
draw() {
//...
}
}
class Zombie extends OnScreenObject {
constructor({ xPosition, yPosition }) {
super({ xPosition, yPosition });
this.width = 15;
this.height = 15;
}
}