読み終えた。入門~中級という感じだったかな。Typescriptの本なのでJavascriptの深いところまでの説明はなかった。
忘れそうなことメモ
TypeScript の数値はIEEE 754 倍精度浮動小数点数
- 数値(仮数部)の精度が53 ビット
Falsyな値は、
0
,NaN
,0n
,""
,null
,undefined
のみ。短絡評価
x || y
は、x
がfalsyのときのみy
が評価されるx ?? y
は、x
がnull
またはundefined
のときのみy
が評価される。(空文字列を有効としたい場合)x && y
は、x
がtruelyのときのみy
が評価される。
分割代入にもデフォルト値が設定できる。
type Obj = { foo?: number }; const obj1: Obj = {}; const { foo = 500 } = obj1; expect(foo).toBe(500);
配列の分割代入はスキップできる
const arr = [1, 2, 4, 8, 16, 32]; const [, foo, , bar, , baz] = arr;
restパターン
const { foo, ...restObj } = obj;
ES2021
&&=
,||=
,??=
の新しい演算子
メソッド記法
メソッド記法で定義すると、メソッド代入時に、引数の部分型の判定が緩められるため、望ましくない。 必要がなければメソッド記法(method1)で関数型を定義するのは避けて通常の記法(method2)を用いるべき。
const obj = { method1(a: number): number { return a * 2; } method2 = (a: nubmer) => { return a * 2; } }
class
privateはtypescriptの修飾子だが、Javascriptで実装された#もある。
overrideは実行には影響はないが、ミスを検出できる。 クラスに変数やメソッドを持たせる場合はstaticを使う。
Timeoutの実装
Promise.raceを使うと実装できる。ただし、実行している処理自体は途中で止まるわけではないことには注意が必要。
const res = await Promise.race([promise1, after1sReject]); console.log({res});