TypeScript(および JavaScript)では、??
は Nullish Coalescing Operator と呼ばれる演算子の一種です。これは、左のオペランドがnull
またはundefined
の場合に右のオペランドを返し、それ以外の場合は左のオペランドを返します。これは、null
またはundefined
の値を扱う際に特に変数にデフォルト値を設定する際に便利です。
構文:
let result = value1 ?? value2;
例:
let name: string | null = null;
let defaultName = "Default Name";
let displayName = name ?? defaultName;
console.log(displayName); // 出力 "Default Name"
この例では、name
がnull
であるため、displayName
はdefaultName
の値である "Default Name" に設定されます。
||
との違い:
論理和演算子(||
)とは異なり、空値結合演算子は左のオペランドがnull
またはundefined
の場合にのみ右のオペランドを返しますが、論理和演算子は左のオペランドが偽の値(例:null
、undefined
、false
、0
、NaN
または""
)の場合に右のオペランドを返します。
let value1 = 0;
let value2 = value1 || 10;
let value3 = value1 ?? 10;
console.log(value2); // 出力 10、0は偽の値と見なされるため
console.log(value3); // 出力 0、0はnullまたはundefinedではないため
この例では、value2
は10
に設定されますが、value1
が偽の値であるためです。一方、value3
は0
に設定されますが、value1
がnull
またはundefined
ではないためです。