「エラー TS2533: オブジェクトが 'null' または 'undefined' である可能性があります」を抑制するにはどうすればよいでしょうか? 質問する

「エラー TS2533: オブジェクトが 'null' または 'undefined' である可能性があります」を抑制するにはどうすればよいでしょうか? 質問する

私は以下を持っています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

外部手段から式が または でないことが分かっている場合nullundefined非 null アサーション演算子 !これらのタイプを排除するために:

// Error, some.expr may be null or undefined
let x = some.expr.thing;
// OK
let y = some.expr!.thing;

おすすめ記事