Поиск по сайту
Ctrl + K
Вопросы по TS

Объясните оператор нулевого объединения (Nullish Coalescing Operator)?

Оператор нулевого объединения, представленный в JavaScript/TypeScript в ECMAScript 2020, позволяет вам управлять значениями переменных, которые могут быть null или undefined. Он полезен для установки значений по умолчанию, если переменная имеет одно из этих значений.

Синтаксис

Синтаксис оператора включает двойной знак вопроса ??:

let result = value1 ?? value2;

В этом примере, если value1 равно null или undefined, то result примет значение value2. В противном случае result будет равен value1.

Примеры использования

Рассмотрим несколько примеров:

let userName: string | null | undefined;

// case 1: userName is null
userName = null;
let finalUserName1 = userName ?? "Guest"; // finalUserName1 будет "Guest"

// case 2: userName is undefined
userName = undefined;
let finalUserName2 = userName ?? "Guest"; // finalUserName2 будет "Guest"

// case 3: userName is an empty string
userName = "";
let finalUserName3 = userName ?? "Guest"; // finalUserName3 будет "" (пустая строка, потому что это не null и не undefined)

// case 4: userName is "Alice"
userName = "Alice";
let finalUserName4 = userName ?? "Guest"; // finalUserName4 будет "Alice"

Почему использовать ?? вместо ||?

Важно понимать различия между ?? и логическим оператором ||. Оператор || возвращает первое истинное значение, а это значит, что он будет рассматривать 0, "" (пустую строку), NaN и другие ложные значения как значение, для которого нужно установить значение по умолчанию. В отличие от него, ?? учитывает только null и undefined.

Пример различий:

let count = 0;

// используя ||
let result1 = count || 10; // result1 будет 10, так как 0 — ложное значение

// используя ??
let result2 = count ?? 10; // result2 будет 0, так как count не null или undefined

Заключение

Оператор нулевого объединения упрощает проверку значений и позволяет более безопасно назначать значения по умолчанию. Это особенно полезно, когда вы работаете с данными, которые могут отсутствовать или не инициализироваться.

Теперь, когда вы знаете о операторе нулевого объединения, вы можете использовать его в своих проектах для упрощения обработки данных и повышения читаемости кода!