javascript是否支持抽象数据类型?

时间:2017-11-30 17:52:58

标签: javascript adt

javascript是否支持抽象数据类型?

我搜索很多,但我没有找到任何答案。我认为它不支持它是否正确?

1 个答案:

答案 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使用,以便即时反馈。