LoginSignup
0
0

typescriptで hoge is possibly 'null'.のエラーは"?"(オプショナルチェーン)で逃がそう

Last updated at Posted at 2023-04-26

tsを書いている時、
特定の要素に対して処理を行おうとするとtyescriptに下記のエラーで怒られました。

html側

<button id="js_btn" type="button">ボタンです</button>

ts側

const btn = document.querySelector("#js_btn"); //ボタン要素を取得
const click = new window.MouseEvent('click');//クリックイベントを作成

//ボタンに対してクリックイベントを発火。これを書くことで、実際にjs_btnをクリックしなくても発火できる
btn.dispatchEvent(click);

こんな感じで記述すると、typescriptコンパイル時にエラーとなりました。
エラー内容

'btn' is possibly 'null'.

文字通り、btn要素が取れないケースもある。
tsを書いている時点では該当要素があるかどうかtsさんからではわからないので、
そのオブジェクトがnullかどうか、チェックを行うことを求めます。
で、下記のように調整すると正常にコンパイルできました。

 btn?.dispatchEvent(click);

上記のオプショナルチェーンを利用することで、nullの場合はその先のdispatchEventは行わないぞ、ということになります。

参考
https://typescriptbook.jp/reference/values-types-variables/object/optional-chaining

追記:または、メソッド名の後ろに!をつけることで、これはnullではないとtsに伝えることも可能。

const btn = document.querySelector("#js_btn")!;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0