聞きたいこと
下のような複数のtypeを組み合わせて Sample1and2
というtypeを定義しています。
type Sample = { id: string, name: string } type Sample2 = { id: string, gender: string } export type Sample1and2 = Sample | Sample2
この Sample1and2
を使用して、下のような関数をし定義しているのですが、引数の sample
から、 gender
も name
を引き出そうとしても型エラーになってしまいます。
const sampleFunc = ({ sample }: { sample: Sample1and2 }) => { const { gender } = sample; // ← Property 'gender' does not exist on type 'Sample1and2' const { name } = sample; // ← Property 'gender' does not exist on type 'Sample1and2' }
当然、Sample1
または Sample2
にしか存在していないプロパティ(gender
or name
)を使用しようとしているため、型エラーになるのはわかるのですが、
下のコードのように、型として保証ができる場合でも型エラーになってしまっていて困っています。
const sampleFunc = ({ sample }: { sample: Sample1and2 }) => { : const samplesTypeIsSample2 = true; // 実際のコードでは単純なtrue/falseの代入ではありません if (samplesTypeIsSample2) { const { gender } = sample; // ← Property 'gender' does not exist on type 'Sample1and2' } }
こういった場合にどのような実装をすればいいのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。