• ..

TypeScript

    ゲッター、セッター

    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である可能性があるということになるからです。