JavaScript
class
static
staticVariable

javascript class構文でstaticプロパティ

javascript の class構文 確かに便利だが…

class Foo {
    static message : "hello foo!"
}

と書けないですね。

let Foo = Object.assign(class {
    get message () {
        return this.constructor.message === undefined ?
            super.message : this.constructor.message;
    }

    set message (v) {
        this.constructor.message = v;
        return true;
    }
},{message: "hello foo!"})

let Bar = class extends Foo {}

//テスト 出力は hello foo!
console.log(Bar.message);

Bar.message = "hello bar!";// Object.assign(Bar, {message: "hello bar!"})と挙動は同じ
console.log(Foo.message);
console.log(new Foo().message);
console.log(Bar.message);
console.log(new Bar().message);

new Bar().message = undefined;
console.log(Foo.message);
console.log(new Foo().message);
console.log(Bar.message);
console.log(new Bar().message);

// staticかどうかチェック
new Foo().message = "bye foo!";
console.log(Foo.message);
console.log(new Foo().message);

Foo.message = undefined;
console.log(Foo.message);
console.log(Bar.message);

と書くことで、staticなプロパティになります。 参考までにどうぞ。