私は以下を持っています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 コンパイラ チェックを無効にせずに、この状況をどのように処理できるでしょうか、または処理すべきでしょうか?
ベストアンサー1
外部手段から式が または でないことが分かっている場合null
はundefined
、非 null アサーション演算子 !
これらのタイプを排除するために:
// Error, some.expr may be null or undefined
let x = some.expr.thing;
// OK
let y = some.expr!.thing;