JavaScript と同じようにクラスのプロパティ宣言時に名前の頭にgetを付けるとゲッター、setを付けるとセッターを定義できます。

class Foo {
  private _value: string;
  
  public get value() {
    // Type 'string | undefined' is not assignable to type 'string'.
    //   Type 'undefined' is not assignable to type 'string'
    return this._value;
  }
  
  public set value(value: string) {
    this._value = value;
  }
}

ゲッターの戻り値はセッターの引数の型になる

以下のコードはエラーになります。

class Foo {
  private _value: string | undefined;
  
  public get value() {
    return this._value;
  }
  
  public set value(value: string) {
    this._value = value;
  }
}

セッターでstringを代入していることでゲッターはstringの戻り値を期待するようになりますが、肝心の_valueundefinedである可能性があるということになるからです。

JavaScript で飯食べたい歴約 5 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log