TypeScript Null & Undefined
TypeScript має потужну систему для обробки значень null
або undefined
.
За умовчанням обробку null
та undefined
вимкнено, і її можна ввімкнути, установивши strictNullChecks
на значення true.
Решта цієї сторінки стосується випадків, коли ввімкнено strictNullChecks
.
Типи
null
та undefined
є примітивними типами і можуть використовуватися як інші типи, наприклад string
.
Приклад
let value: string | undefined | null = null;
value = 'hello';
value = undefined;
Спробуйте самі »
Якщо strictNullChecks
увімкнено, TypeScript вимагає встановлення значень, якщо до типу явно не додано undefined
.
Додаткове з’єднання
Додаткове з’єднання — це функція JavaScript, яка добре працює з обробкою нульових значень у TypeScript. Це дозволяє отримати доступ до властивостей об’єкта, який може існувати або не існувати, за допомогою компактного синтаксису. Його можна використовувати з оператором ?.
під час доступу до властивостей.
Приклад
interface House {
sqft: number;
yard?: {
sqft: number;
};
}
function printYardSize(house: House) {
const yardSize = house.yard?.sqft;
if (yardSize === undefined) {
console.log('No yard');
} else {
console.log(`Yard is ${yardSize} sqft`);
}
}
let home: House = {
sqft: 500
};
printYardSize(home); // Друкує 'No yard'
Спробуйте самі »
Nullish Coalescence - Нульова коалесценція
Nullish Coalescence — ще одна функція JavaScript, яка також добре працює з обробкою нульових значень у TypeScript. Це дозволяє писати вирази, які мають запасний варіант, особливо коли йдеться про null
або undefined
. Це корисно, коли у виразі можуть зустрічатися інші хибні значення, але вони залишаються дійсними. Це можна використовувати з оператором ??
у виразі, подібно до використання оператора &&
.
Приклад
function printMileage(mileage: number | null | undefined) {
console.log(`Mileage: ${mileage ?? 'Not Available'}`);
}
printMileage(null); // Prints 'Mileage: Not Available'
printMileage(0); // Друкує 'Mileage: 0'
Спробуйте самі »
Нульова інструкція
Система виводу TypeScript не є досконалою, іноді має сенс ігнорувати можливість значення null
або undefined
. Простий спосіб зробити це — використати кастинг, але TypeScript також надає оператор !
як зручний ярлик.
Приклад
function getValue(): string | undefined {
return 'hello';
}
let value = getValue();
console.log('value length: ' + value!.length);
Спробуйте самі »
Так само як і кастинг, це може бути небезпечно, тому це слід використовувати обережно.
Обробка меж масиву
Навіть якщо strictNullChecks
увімкнено, за замовчуванням TypeScript припускатиме, що доступ до масиву ніколи не повертатиме значення undefined (якщо undefined не є частиною типу масиву).
Конфігурацію noUncheckedIndexedAccess
можна використати, щоб змінити цю поведінку.
Приклад
let array: number[] = [1, 2, 3];
let value = array[0]; // за допомогою `noUncheckedIndexedAccess` це має тип `number | undefined`
Спробуйте самі »