はじめに
TypeScript 4.0 Betaが2020/07/07にリリースされました。
この記事はリリースノートの中で個人的に気になった機能、Null合体代入演算子について共有するためのものです。
おことわり
この記事はBeta版に関するものです。正式リリース時に内容が変更になる可能性があります。
TypeScript 4.0が2020/08/20に正式リリースされました。Null合体代入演算子も予定通り導入されました。
Nullish Coalescing Assignment Operator
TypeScript4.0では、Null合体代入演算子(Nullish Coalescing Assignment Operator)が導入される予定です。
Announcing TypeScript 4.0 Beta
この演算子を議論しているIssueはこちらです。
issue #37255 : Nullish Coalescing and Logical Compound Assignments
ECMAScriptのproposalはstage3です。
機能
この演算子は、その名の通りTypeScript3.7で導入されたのNull合体演算子??
と代入を組み合わせた演算子です。
たとえば、以下の2行はまったく同じ意味になります。
obj.x ??= 42;
obj.x = obj.x ?? 42;
-
obj.x
がnull
かundefined
の場合のみ、右辺の値が代入されます。 -
obj.x
が0
や""
やfalse
などのFalsyな値の場合は代入されません。
どんなときに使うのか
たとえば
- 関数の引数にオブジェクトを使う
- オブジェクトは複数の省略可能なプロパティを持つ
- 省略した場合、デフォルト値を代入する
という場合にコードが簡潔になります。
function f(option?:
{
val1?: string,
val2?: string
}
): void {
option ??= {};
option.val1 ??= "default1";
option.val2 ??= "default2";
}