我有一个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编译器检查的情况下处理这种情况?

null在“普通” JavaScript中使用s来初始化变量或属性值。如果给定的var或prop存在但它“尚无可用值”或“执行时已清除值”,这将给我直接的答案。只是按照惯例。正如我在此处的答案所示,这可能不是TypeScript中的最佳方法。谢谢你的想法。