У мене є type:
type tSelectProtected = {
handleSelector?: string,
data?: tSelectDataItem[],
wrapperEle?: HTMLElement,
inputEle?: HTMLElement,
listEle?: HTMLElement,
resultEle?: HTMLElement,
maxVisibleListItems?: number
}
Я оголошую глобальну змінну модуль:
var $protected : tSelectProtected = {};
Я присвоюю належне значення за function1()обсягом:
$protected.listEle = document.createElement('DIV');
Пізніше за function2()обсягом я закликаю:
$protected.listEle.classList.add('visible');
Я отримую помилку TypeScript:
error TS2533: Object is possibly 'null' or 'undefined'
Я знаю, що я можу зробити явну перевірку за допомогою, if ($protected.listEle) {$protected.listEle}щоб заспокоїти компілятор, але це здається дуже непристойним для більшості нетривіальних випадків.
Як цю ситуацію можна чи потрібно вирішити, не вимикаючи перевірки компілятора TS?

nulls у ванільному JavaScript для ініціалізації змінних чи властивостей. Це дає мені пряму відповідь, якщо вказаний var або prop існує, але він ще не має "корисного значення" або "значення було очищено в певний момент виконання". Це просто за умовами. Це може бути не найкращим підходом у TypeScript, як я бачу відповіді тут. Дякую за думки.