これは私が何度か遭遇した状況であり、かなり簡単なように思えますが、タイプを任意の値に設定しない解決策を見つけることができません。
関数は 2 つの異なるオブジェクトのいずれかを引数として受け取り、どのオブジェクトが受信されたかを確認し、対応するフィールドを返します。
これは問題の簡略化されたバージョンですが、問題は、2 つのオブジェクトがプロパティ (重複しない) によってのみ区別可能であり、他のタイプには存在しないため、どのプロパティにもアクセスできないことです。
type Obj1 = {
message: string
}
type Obj2 = {
text: string
}
const getText = (obj: Obj1 | Obj2): string => {
if (obj.message) {
return obj.message
}
return obj.text
}
ベストアンサー1
タイプを絞り込む必要があります。in
オペレーター。
const getText = (obj: Obj1 | Obj2): string => {
if ("message" in obj) {
return obj.message
}
return obj.text
}