読者です 読者をやめる 読者になる 読者になる

TypeScript - get アクセサだけを定義したメンバへの代入でコンパイルエラーにならない

typescript

get アクセサだけを定義したメンバに値を代入してもコンパイルエラーにならないようです。

サンプルコードです。

class Sample {
    private _value: number;

    constructor(value: number) {
        this._value = value;
    }

    // get アクセサだけ定義
    get value() { return this._value; }
}

var sample = new Sample(1);

// コンパイルエラーにならない
sample.value = 2;

// valueは更新されない
alert(sample.value);  // 1

sample.value = 2; の部分でコンパイルエラーになるのかと思ったのですが、実際にはコンパイルエラーになりません。sample.valueの値は変更されずもとのままです。TypeScript 0.9.5 で確認。

この動きで正しいのでしょうか、私が何か勘違いしているのでしょうか。うっかりハマりそうです・・・。

set アクセサも定義すると想像通りの動きなんですけどね。

class Sample {
    private _value: number;

    constructor(value: number) {
        this._value = value;
    }

    get value() { return this._value; }
    set value(param: number) { this._value = param; }
}

var sample = new Sample(1);
sample.value = 2;
alert(sample.value);  // 2