Union Typeで”Property does not exist on type”
下記のようなコードで、Union Typeで型指定した場合に、片方の型にしか存在しないプロパティを指定すると”Property does not exist on type”のエラーになってしまいます。
type Inu = {
wan: 'wan'
}
type Neko = {
nyan: 'nyan'
}
const hoge = (obj: Inu | Neko) => {
console.log(obj.wan)
//Property 'wan' does not exist on type 'Inu | Neko'. Property 'wan' does not exist on type 'Neko'.
}
この場合は下記のように in を使ってそのオブジェクトが特定のプロパティを持っているか確認してから呼び出すようにすればOKです。
const hoge = (obj: Inu | Neko) => {
if ('wan' in obj) {
console.log(obj.wan) //エラーなし
}
}
割と便利なので覚えておきたいですね。
参考
in 演算子 - JavaScript | MDN
in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。

コメント