はじめに
型 'string | undefined' の引数を型 'string' のパラメーターに割り当てることはできません。
このエラーよく見ますよね。
string
だけではなくてnumber
だったり、MyType
のようなユーザ定義型だったり、色々あると思いますが、要は〇〇 | undefined
の場合のお話です。
結論
存在確認をしてundefinedの可能性を潰してあげましょう。
// このIF文で存在確認をしている。
if (hoge) {
validateString(hoge.text)
}
NULL合体演算子を使ってもいいし、三項演算子を使ってもいいです。
とにかく型チェックを無理やり回避するようなやり方をやめましょう。
出来れば避けたい対処法
・asで無理やり通す
→そうだ!as使えば良いじゃん!ってなりがちですが、型の安全性が損なわれるので良くないです。
・そもそものユーザー定義型でundefinedを入れてしまう
→全てのユーザ定義型でそれをやるって訳にもいかないので、良くないです。
・諦めていっそany
→どうしようもない時も正直あります。
ただし最終手段です。
ESLintとかでany禁止にするのが本当は一番なんですけどね・・・