const class
エラーの出たJavaScript
const A = class {
constructor(_a) {
this.a = _a;
}
}
const B = class extends A {
constructor(_b) {
super(_b);
}
}
(() => {
var b = new B("test");
console.log(b);
})();
とあるJavaScriptを試したところ「TypeError: Class constructor cannot be invoked without 'new'」が出た。
エラーの原因は何?
普通のclass
エラーの出ないJavaScript
class A {
constructor(_a) {
this.a = _a;
}
}
class B extends A {
constructor(_b) {
super(_b);
}
}
(() => {
var b = new B("test");
console.log(b);
})();
普通によく見るclassならエラーが出ない。
判明した原因とは
原因
const B = class extends A {}()
後ろの無名関数の即時関数とくっついてnew A()
し損ねたと判定された。
constの後ろに「;」をつけてやれば解決。
提案
const class
を使わないようにしよう。
知らないだけかもだがあまり見ないと思う
「;」を省略しないようにしよう。
ブックマークレットが動かなくなるし今回のようなこともある。
自戒と反省を込めて