TypeSciprtのオプショナルチェーンをメモっ!

Optional Chaining

rubyで書くと user&.id ですね。
(userがnilでなければidを呼び、userがnilの場合はnilが返るやつ)

で、Typescriptで書くとこんな感じ

const id = user?.id;

ですね。
(userがnull / undefinedの場合でもエラーにならない)

これをオプショナルチェーンを使わずに書くと

const id = user && user.id;

でしょうか。

Non-null assertion operator

Typescriptのコードを呼んでいる時に user!.id を見つけたのでついでに。
こっちの方が user && user.id に近い気がしますが、userが絶対に入っている状態を user!で書くことができます。

スプレッド構文

スプレッド構文(spread syntax)はチェーンとは関係ないですがググりにくい(いつも名前を忘れる)ので、ついでに。
...usersは外側の括弧がないのと同じ状態になります。

const users = [1,2,3];
const users2 = [0, ...users];
// users2 = [0,1,2,3];

何かあれば追記するかも?