Open4

TypeScript Tips集(個人メモ)

Yuma ItoYuma Ito

Mapオブジェクトのキーの等価性

  • キーには、プリミティブ値だけでなく、オブジェクトも使用することができる。
  • キーの等価性(あるキーとあるキーが同じであること)は===のルールとほぼ同じ。(Same-value-zero
    • 「ほぼ」と表現したのは、NaNの扱いが違うため。Same-value-zeroルールでは、NaNNaNは同じ。
    • NaNをキーにすることはないだろうから、あまり気にする必要はないと思う。
  • オブジェクトの参照が違うと異なるキーであるので注意。

参考:Map - JavaScript _ MDN

Yuma ItoYuma Ito

protectedプロパティを呼び出せる範囲

  • 継承元のクラスと継承先のクラスのインスタンス内でのみアクセスが可能。
  • 扱いはほぼprivateと同じ。
equals(money: Money): boolean {
  return this.amount === money.amount; // amountプロパティがprotectedの場合、エラー
}

テスト駆動開発第6章の学習中にエラーが発生し、調べた。

参考: クラス | TypeScript 日本語ハンドブック | js STUDIO

Yuma ItoYuma Ito

定数オブジェクトの値の型をつくる

const HAND = {
    GUU: 0,
    CHOKI: 1,
    PAA: 2
} as const;

type HandValue = typeof HAND[keyof typeof HAND]; // 0 | 1 | 2