Ответ 1
Вы можете написать:
var el = document.getElementById('element_id')!;
The! означает "поверьте мне, это не нулевая ссылка"
При использовании StrictNullChecks в TypeScript 2.0 код
var el: HTMLElement = document.getElementById('element_id');
вызывает ошибку
Type 'HTMLElement | null' is not assignable to type 'HTMLElement'.
Type 'null' is not assignable to type 'HTMLElement'.
Почему это и как я могу скомпилировать код, не делая el
nullable?
Вы можете написать:
var el = document.getElementById('element_id')!;
The! означает "поверьте мне, это не нулевая ссылка"
Это потому, что document.getElementById(...);
может возвращать экземпляр HTMLElement
, если элемент найден, или null
, если это не так. Поскольку этот API не находится под вашим контролем, вам придется изменить свой код, чтобы позволить элементу быть нулевым:
var el: HTMLElement | null = document.getElementById("...");
Вы также можете создать свои собственные псевдонимы псевдонимов:
type NullableHTMLElement = HTMLElement | null;
var el: NullableHTMLElement = document.getElementById("...");
Или еще лучше использовать решение AlexG, которое еще лучше!