5️⃣

[読書メモ]オブジェクト設計スタイルガイド 4章5節 with TypeScript

2024/02/15に公開

オブジェクト設計スタイルガイドを読みながら、TypeScriptでやるならどうやるかを考えながら書きました。
要約的に読める内容になっていると思うので、サクッと3分ぐらいで読める記事となっています。
https://www.oreilly.co.jp/books/9784814400331/

4.5 イミュータブルオブジェクトのモディファイアメソッドでは変更されたオブジェクトを返す

モディファイア:「⁠非破壊の編集ができる機能」のこと

class Position {
  constructor(private x: number, private y: number) {}

  private clone() {
    return new Position(this.x, this.y)
  }

  // オブジェクト自身のコピーを返すのは良いが、セッターメソッド感があって若干使いにくさがある。
  withX(x: number) {
    let copy = this.clone()
    copy.x = x
    return copy
  }

  // 技術的な名前でなくなった。使いやすくなった。
  toTheLeft(steps: number) {
    let copy = this.clone()
    copy.x = copy.x - steps
    return copy
  }
}

Discussion