[解決済み】「エラー TS2533: オブジェクトは 'null' または 'undefined' の可能性があります」を抑制する方法とは?
2022-03-25 19:53:21
質問
私は
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コンパイラのチェックを無効にすることなく、この状況に対処する方法、あるいは対処すべき方法を教えてください。
解決方法は?
この機能は "strict null checks" と呼ばれています。
--strictNullChecks
コンパイラーフラグが設定されていません。
しかし
null
があります。
説明されている
として
10億ドルの過ち」(The Billion Dollar Mistake
そのため、TypeScriptのような言語が修正を導入しているのは喜ばしいことです。私は、この機能を有効にしておくことを強くお勧めします。
これを修正する方法の1つは、値が決して
null
または
undefined
を初期化するなどの工夫が必要です。
interface SelectProtected {
readonly wrapperElement: HTMLDivElement;
readonly inputElement: HTMLInputElement;
}
const selectProtected: SelectProtected = {
wrapperElement: document.createElement("div"),
inputElement: document.createElement("input")
};
参照 Ryan Cavanaughの回答 という選択肢もあります。
関連
-
[解決済み】Typescript : require文はimport文の一部ではない
-
[解決済み】「TS2532: Object is possibly 'undefined'」というエラーを解決するにはどうしたらいいですか?
-
[解決済み] TypeScriptで、「extends keyof」と「in keyof」はどういう意味ですか?
-
[解決済み] TypeScriptのsetTimeoutはどのような戻り値型を使用すればよいですか?
-
[解決済み] 未定義」の可能性があるオブジェクトを呼び出すことができません.ts(2722)
-
[解決済み] メインとテストのコンパイルを分離するために、typescriptコンパイラ(tsc)のオプションはどのように設定するのが正しいのでしょうか?
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] TypeScriptでオブジェクトに動的にプロパティを割り当てるには?
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] グローバル定数の定義
-
[解決済み] 2つのインターフェイスを統合する
-
[解決済み] TypeScriptでfetchを使う方法
-
[解決済み] Typescript ReferenceError: exports が定義されていません。
-
[解決済み] クラスのプロパティが整数であることはどのように指定するのですか?
-
[解決済み] オブジェクトの配列に対してインターフェースを定義するには?
-
[解決済み] TypeScriptで文字列をenumに変換するには?
-
[解決済み] Typescript は ?演算子をサポートしていますか?(そして、それは何と呼ばれているのでしょうか?)
-
[解決済み】ブロックに`@ts-ignore`を使用するには?
-
[解決済み】引数として渡されたTypeScriptオブジェクトにデフォルト値を設定する