gpt4 book ai didi

javascript - JS 类抽象

转载 作者:行者123 更新时间:2023-11-29 15:08:26 28 4
gpt4 key购买 nike

我一直在尝试创建一个可以修改继承类变量的抽象类,但是当我在继承类中设置一个空变量时,我遇到了一个问题,抽象类不会设置它?

这个例子不工作

class Abc {
constructor() {
this.id = "x";
}
}
class Test extends Abc {
id;
}

const test = new Test();
console.log(test)

这个例子行得通

class Abc {
constructor() {
this.id = "x";
}
}
class Test extends Abc {
}

const test = new Test();
console.log(test)

最佳答案

您可以使用 undefined 将它们初始化为您的 id,但也可以在构造函数中将其设置为可选字段,以防您希望在创建实例时设置。

你不能在 JS 中有抽象类,但你可以添加一个简单的验证来防止直接实例化:

class AbstractClass {
constructor(id = undefined) {
if (new.target.name === AbstractClass.name) {
throw new Error("Can not create instance of Abstract class");
}
this.id = id;
}
}

class DerivedClass extends AbstractClass {}

const disallowed = new AbstractClass(); // throws error
const allowed = new DerivedClass(1); // will work fine

关于javascript - JS 类抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57468209/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com