英文:
Error with super structure in inheritance attempt (typescript classes)
问题
class Character {
public readonly name: string;
public readonly level: number;
constructor(name: string, level: number) {
this.name = name;
this.level = level;
}
walk() {
return `${this.name} walking!`;
}
showMyLevel() {
return `${this.name} has the level ${this.level}`;
}
}
class Wizard extends Character {
private readonly staff: string;
constructor(name: string, level: number, staff: string) {
super(name, level);
this.staff = staff;
}
fireBall() {
return `${this.name} fire ball!`;
}
}
const wizard1 = new Wizard('Ray', 8, 'Cajado');
console.log(wizard1.fireBall());
英文:
class Character {
public readonly name: string;
public readonly level: number;
constructor(name: string, level: number) {
this.name = name;
this.level = level;
}
walk() {
return `${this.name} walking!`
}
showMyLevel() {
return `${this.name} has the level ${this.level}`
}
}
class Wizzard extends Character {
private readonly cajado: string;
constructor(cajado: string) {
super(name, level);
this.cajado = cajado;
}
fireBall() {
return `${this.name} fire ball!`
}
}
const wizzard1 = new Wizzard('Ray', 8);
console.log(wizzard1.fireBall());
I would like my Wizard class to inherit my Character class and implement a constructor with one more item. However in super() I am getting errors
const name: void
@deprecated
'name' is deprecated.ts(6385)
lib.dom.d.ts(17877, 5): The declaration was marked as deprecated here.
Argument of type 'void' is not assignable to parameter of type 'string'.ts(2345)
Cannot find name 'level'. Did you mean the instance member 'this.level'?ts(2663)
I thought this could be happening because the variables are private in readonly, but changing it to public returns the same problem. Would you help me?
答案1
得分: 1
你需要在 Wizzard
类中添加与 Character
类匹配的参数。
class Wizzard extends Character {
private readonly cajado: string;
constructor(name: string, level: number, cajado: string) {
super(name, level);
this.cajado = cajado;
}
fireBall() {
return `${this.name} fire ball!`
}
}
另外,请注意正确的拼写是 Wizard
,而不是 Wizzard
。
英文:
You need to add parameters to the Wizzard
class that match the Character
class.
class Wizzard extends Character {
private readonly cajado: string;
constructor(name: string, level: number, cajado: string) {
super(name, level);
this.cajado = cajado;
}
fireBall() {
return `${this.name} fire ball!`
}
}
Also note that Wizard
is the correct spelling, not Wizzard
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论