В TypeScript типы, допускающие значение NULL, позволяют определять переменные, которые могут содержать либо допустимое, либо нулевое значение. Эта гибкость особенно полезна при работе с необязательными или потенциально отсутствующими данными. В этой статье мы рассмотрим различные методы работы с типами, допускающими значение NULL, в TypeScript, а также приведем примеры кода.
Содержание:
-
Введение в типы, допускающие значение NULL
-
Объявление типов, допускающих значение NULL
-
Проверка значения NULL или Undefine
-
Необязательное связывание
-
Нулевое объединение
-
Оператор ненулевого утверждения
-
Типовая защита
-
Предикаты типов
-
Использование параметра компилятора “strictNullChecks”
-
Нулевая безопасность с библиотеками и платформами
-
Введение в типы, допускающие значение NULL.
Типы, допускающие значение NULL, были представлены в TypeScript 2.0 и позволяют представлять значения, которые могут быть либо допустимыми значениями, либо NULL. Это особенно полезно при работе с необязательными параметрами или переменными, которым может не быть присвоено значение. -
Объявление типов, допускающих значение NULL.
Чтобы объявить тип, допускающий значение NULL, вы можете использовать синтаксис типа объединения и включить тип NULL в качестве одного из параметров. Например:
let nullableString: string | null = null;
let nullableNumber: number | null = 42;
- Проверка на значение NULL или неопределенное значение.
Чтобы проверить, является ли переменная, допускающая значение NULL, нулевой или неопределенной, вы можете использовать простой оператор if или оператор равенства. Например:
if (nullableString === null) {
console.log("The variable is null");
}
if (nullableNumber !== undefined) {
console.log("The variable is not undefined");
}
- Необязательное связывание.
Необязательное связывание позволяет получить доступ к вложенным свойствам или методам объекта, не вызывая ошибки, если какое-либо промежуточное свойство имеет значение NULL или неопределенное. Например:
const user = {
name: "John",
address: {
city: "New York",
postalCode: "12345",
},
};
const postalCode = user?.address?.postalCode;
console.log("Postal Code:", postalCode); // Output: "Postal Code: 12345"
- Объединение с нулевым значением.
Объединение с нулевым значением — это способ предоставить значение по умолчанию для переменной, допускающей значение NULL, если она имеет значение NULL или неопределена. Он использует оператор двойного вопросительного знака (??). Например:
const name = nullableString ?? "Unknown";
console.log("Name:", name); // Output: "Name: Unknown"
- Оператор ненулевого утверждения:
Оператор ненулевого утверждения (!) позволяет вам сообщить компилятору TypeScript, что переменная, допускающая значение NULL, не является нулевой или неопределенной, даже если компилятор не может сделать это вывод. Это полезно, если вы уверены, что значение будет присвоено во время выполнения. Например:
function processNullableString(str: string | null) {
str!.toUpperCase();
}
- Защита типа.
Защита типа — это способ сузить тип переменной внутри условного блока на основе проверки во время выполнения. Это позволяет вам безопасно получать доступ к свойствам или методам, специфичным для определенного типа. Например:
function processNullableValue(value: string | null) {
if (typeof value === "string") {
console.log(value.toUpperCase());
} else {
console.log("Value is null or not a string");
}
}
- Предикаты типов.
Предикаты типов — это пользовательские функции, которые можно определить для определения типа переменной внутри условного блока. Это обеспечивает более выразительный способ сузить тип переменной. Например:
function isString(value: unknown): value is string {
return typeof value === "string";
}
function processNullableValue(value: string | null) {
if (isString(value)) {
console.log(value.toUpperCase());
} else {
console.log("Value is null or not a string");
}
}
- Использование параметра компилятора «strictNullChecks»:
Опция компилятора «strictNullChecks» гарантирует, что переменным не будут присвоены значения NULL или неопределенные значения, если они явно не объявлены как допускающие значение NULL. Включение этой опции может помочь обнаружить потенциальные ошибки, связанные с нулевым значением, во время компиляции. Например:
{
"compilerOptions": {
"strictNullChecks": true
}
}
- Null-безопасность с библиотеками и платформами.
Многие популярные библиотеки и платформы в экосистеме TypeScript предоставляют встроенные утилиты или шаблоны для работы с типами, допускающими значение NULL. При использовании стороннего кода обратитесь к документации, чтобы понять рекомендуемые подходы к обработке значений, допускающих значение NULL.