困ったこと
TypeScriptでInputEvent
を扱う際などに、event.target
(event.currentTarget
)のvalue
を参照しようとすると上記のエラーになる。
原因はevent.target
が何のElement
に該当するかはコンパイラーが推論できておらず、単純にEventTarget
と推論されているため。
解決法
1. targetに型指定しつつ直接取り出す
target
のみを参照する場合に限る。
2. instanceofで型ガードする
3. Event型を拡張する
Event
を継承した型を作成し、target
をジェネリクスで受け取った型に上書きする。
4. asで型アサーションする
これは最終手段。
Reactの場合
React.ChangeEvent
のジェネリクスに対象のElement
を指定する。
1