Open4
TypeScript Tips集(個人メモ)
Mapオブジェクトのキーの等価性
- キーには、プリミティブ値だけでなく、オブジェクトも使用することができる。
- キーの等価性(あるキーとあるキーが同じであること)は
===
のルールとほぼ同じ。(Same-value-zero
)- 「ほぼ」と表現したのは、
NaN
の扱いが違うため。Same-value-zeroルールでは、NaN
とNaN
は同じ。 -
NaN
をキーにすることはないだろうから、あまり気にする必要はないと思う。
- 「ほぼ」と表現したのは、
- オブジェクトの参照が違うと異なるキーであるので注意。
protected
プロパティを呼び出せる範囲
- 継承元のクラスと継承先のクラスのインスタンス内でのみアクセスが可能。
- 扱いはほぼ
private
と同じ。
equals(money: Money): boolean {
return this.amount === money.amount; // amountプロパティがprotectedの場合、エラー
}
テスト駆動開発第6章の学習中にエラーが発生し、調べた。
クラス名を取得したいとき
this.constructor.name
で取得できる。
参考: Get the name of a TypeScript class at runtime - Meziantou's blog
定数オブジェクトの値の型をつくる
const HAND = {
GUU: 0,
CHOKI: 1,
PAA: 2
} as const;
type HandValue = typeof HAND[keyof typeof HAND]; // 0 | 1 | 2