Как можно проверить null и undefined в TypeScript?
В TypeScript часто возникает необходимость проверки значений на null
и undefined
. Это важно, поскольку в приложениях может быть много сценариев, когда переменные могут не иметь значения или вообще отсутствовать. В этой статье мы рассмотрим несколько методов, которые помогут разработчикам справляться с такими ситуациями.
1. Защитное выражение
Самый простой способ проверить переменные на null
и undefined
— использовать условные операторы. С помощью таких условных выражений мы можем выполнить определенные действия, если переменная имеет значение null
или undefined
.
function checkValue(value: string | null | undefined) {
if (value === null) {
console.log("Значение равно null");
} else if (value === undefined) {
console.log("Значение равно undefined");
} else {
console.log(`Значение: ${value}`);
}
}
checkValue(null); // Значение равно null
checkValue(undefined); // Значение равно undefined
checkValue("Hello"); // Значение: Hello
2. Оператор ?? (nullish coalescing)
TypeScript поддерживает оператор объединения с null (nullish coalescing operator) ??
, который возвращает правый операнд, если левый равен null
или undefined
. Это удобно для задания значений по умолчанию.
function getDisplayName(name: string | null | undefined) {
const displayName = name ?? "Гость";
console.log(displayName);
}
getDisplayName(null); // Гость
getDisplayName(undefined); // Гость
getDisplayName("Алексей"); // Алексей
3. Оператор ? (optional chaining)
Еще одной полезной техникой является цепочка опциональных свойств (optional chaining). Этот оператор позволяет избежать ошибок, связанных с попытками доступа к свойствам объектов, которые могут быть null
или undefined
.
interface User {
name: string;
age?: number | null;
}
function getUserInfo(user: User | null | undefined) {
// Если user или user.age равны null или undefined, вернется значение undefined
const age = user?.age ?? "Возраст неизвестен";
console.log(`Имя: ${user?.name}, Возраст: ${age}`);
}
getUserInfo(null); // Имя: undefined, Возраст: Возраст неизвестен
getUserInfo({ name: "Алексей" }); // Имя: Алексей, Возраст: Возраст неизвестен
getUserInfo({ name: "Мария", age: 25 }); // Имя: Мария, Возраст: 25
4. Инструменты проверки типов
TypeScript предлагает способ проверки типов, позволяя разделять типы, в том числе с использованием объединенных типов.
function isString(value: any): value is string {
return typeof value === "string";
}
function handleValue(value: string | null | undefined) {
if (isString(value)) {
console.log(`Строка: ${value}`);
} else {
console.log("Значение не является строкой или отсутствует");
}
}
handleValue("Привет"); // Строка: Привет
handleValue(null); // Значение не является строкой или отсутствует
handleValue(undefined); // Значение не является строкой или отсутствует
Заключение
Проверка null
и undefined
в TypeScript — это важная тема, которая помогает избежать ошибок в коде и делает работу с данными более безопасной. Используя инструменты TypeScript, такие как условные операторы, оператор ??
, оператор ?
, а также проверки типов, вы сможете эффективно управлять значениями и обеспечивать надежность своих приложений. С практикой эти подходы станут естественными для вас при написании кода на TypeScript.