В TypeScript может быть полезно избежать значения null
для свойств объектов, чтобы предотвратить ошибки времени выполнения, а также чтобы код был более читаемым и безопасным. Существует несколько способов сделать это:
1. Используйте оператор !
(небезопасно):
Если вы уверены в том, что свойство объекта не будет null
или undefined
, вы можете использовать оператор !
после имени свойства, чтобы сообщить компилятору TypeScript, что свойство гарантированно будет иметь значение. Например:
const obj: { prop: string } = { prop: "value" }; const propValue: string = obj.prop!;
Однако это решение небезопасно, поскольку компилятор не делает проверку наличия значения, поэтому в случае, если свойство ожидаемо null
или undefined
, возникнет ошибка времени выполнения.
2. Используйте условное выражение с проверкой на null
или undefined
(безопасно):
Проверка на null
или undefined
может быть выполнена с использованием условного (тернарного) оператора. Вы можете задать значение по умолчанию, которое будет использоваться, если свойство null
или undefined
. Например:
const obj: { prop: string | null | undefined } = { prop: null }; const propValue: string = obj.prop !== null && obj.prop !== undefined ? obj.prop : "default";
Это безопасный способ избежать ошибок времени выполнения, поскольку код будет выполняться только в том случае, если свойство не равно null
или undefined
.
3. Используйте Non-null assertion оператор:
В TypeScript с версии 2.7 появился специальный оператор Non-null assertion (!
), который позволяет указать, что переменная не может быть null
или undefined
. Например:
const obj: { prop: string | null | undefined } = { prop: "value" }; const propValue: string = obj.prop!;
Данный подход является безопасным, поскольку компилятор TypeScript проверяет, что свойство не может быть null
или undefined
перед тем, как присвоить его переменной.
4. Используйте Type assertion:
Вы можете использовать Type assertion, чтобы явно указать TypeScript ожидаемый тип значения, пропустив проверку на null
или undefined
. Например:
const obj: { prop: string | null | undefined } = { prop: "value" }; const propValue: string = obj.prop as string;
Однако необходимо быть осторожным при использовании этого метода, так как неправильное выполнение приведет к ошибкам времени выполнения компилятора.
В конечном счете выбор конкретного метода зависит от контекста использования и требований вашего проекта.