Дмитрий Нечаев
Null и Undefined в TypeScript
Введение
В JavaScript есть два примитивных значения, используемых для сигнализации об отсутствии или неинициализированном значении: null
и undefined
.
В TypeScript есть два соответствующих типа с такими же именами. Поведение этих типов зависит от того, включена ли у вас опция strictNullChecks
.
Выключенный strictNullChecks
При отключенной strictNullChecks
, к значениям, которые могут быть нулевыми или неопределенными, по-прежнему можно обращаться нормально, а значения null
и undefined
могут быть присвоены свойству любого типа. Это похоже на то, как ведут себя языки без проверки нуля (например, C#, Java). Отсутствие проверки этих значений, как правило, является основным источником ошибок; мы всегда рекомендуем включать strictNullChecks
, если это целесообразно в их кодовой базе.
Включенный strictNullChecks
При включенной strictNullChecks
, когда значение является null
или undefined
, вам нужно будет проверить наличие этих значений, прежде чем использовать методы или свойства для этого значения. Точно так же, как проверка на неопределенность перед использованием необязательного свойства, мы можем использовать сужение для проверки значений, которые могут быть null
:
function doSomething(x: string | null) {
if (x === null) {
// ничего не делай
} else {
console.log("Привет, " + x.toUpperCase());
}
}
Оператор утверждения non-null (Postfix !)
В TypeScript также есть специальный синтаксис для удаления null
и undefined
из типа без явной проверки. Запись !
после любого выражения фактически является утверждением типа, что значение не является null
или undefined
:
function liveDangerously(x?: number | null) {
// Нет ошибки
console.log(x!.toFixed());
}
Как и другие утверждения типа, это не меняет поведение вашего кода во время выполнения, поэтому важно использовать !
только тогда, когда вы знаете, что значение не может быть null
или undefined
.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile