27
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScript4.0でNull合体代入演算子(??=)が導入されました

Last updated at Posted at 2020-07-08

はじめに

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です。

proposal-logical-assignment

機能

この演算子は、その名の通りTypeScript3.7で導入されたのNull合体演算子??と代入を組み合わせた演算子です。

たとえば、以下の2行はまったく同じ意味になります。

obj.x ??= 42;
obj.x = obj.x ?? 42;
  • obj.xnullundefinedの場合のみ、右辺の値が代入されます。
  • obj.x0""falseなどのFalsyな値の場合は代入されません。

どんなときに使うのか

たとえば

  • 関数の引数にオブジェクトを使う
  • オブジェクトは複数の省略可能なプロパティを持つ
  • 省略した場合、デフォルト値を代入する

という場合にコードが簡潔になります。

function f(option?:
  {
    val1?: string,
    val2?: string
  }
): void {
  option ??= {};
  option.val1 ??= "default1";
  option.val2 ??= "default2";
}

参考記事

PHP: Null合体代入演算子(??=)の使い所を考えてみた

27
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?