javascript是否支持抽象数据类型?
我搜索很多,但我没有找到任何答案。我认为它不支持它是否正确?
答案 0 :(得分:0)
不,但您可以使用new.target
模拟它(在ES2015 +中):
class Abstract {
constructor(value) {
if (new.target === Abstract) {
throw new Error("Abstract is abstract");
}
this.value = value; // Proof that if the check above is false,
// we *do* continue to set up the instance
}
}
class Concrete extends Abstract {
}
try {
const a = new Abstract(1);
console.log("Got Abstract instance, value = " + a.value);
} catch (e1) {
console.error(e1);
}
try {
const c = new Concrete(2);
console.log("Got Concrete instance, value = " + c.value);
} catch (e2) {
console.error(e2);
}

可悲的是,这只会在尝试执行实例化的代码行运行时产生错误,而不是在解析/编译时。
TypeScript是JavaScript的派生物,它添加了类型检查和其他一些东西,它具有abstract classes的概念,它在TypeScript编译阶段(编译TypeScript时被标记出来)[或&# 34;转换为#34;]到JavaScript);这些信息也可供IDE使用,以便即时反馈。