TypeScriptを勉強していて、Union型に関するエラーの原因が分からず悩んでいます。
ソースコード中の"both"という変数に入っているオブジェクトはCat型もDog型も満たしているはずですが、Cat型の変数(Dog型の変数)に代入できないのはなぜでしょうか?
発生している問題・エラーメッセージ
Type 'CatOrDogOrBoth' is not assignable to type 'Cat'. Property 'puurs' is missing in type 'Dog' but required in type 'Cat'. Type 'CatOrDogOrBoth' is not assignable to type 'Dog'. Type 'Cat' is missing the following properties from type 'Dog': barks, wags
該当のソースコード
typescript
1type Cat = { 2 name: string 3 puurs: boolean 4} 5type Dog = { 6 name: string 7 barks: boolean 8 wags: boolean 9} 10 11type CatOrDogOrBoth = Cat | Dog 12type CatAndDog = Cat & Dog 13 14const both: CatOrDogOrBoth = { 15 name: "hoge", 16 puurs: false, 17 barks: false, 18 wags: false 19} 20 21const both_: CatAndDog = { 22 name: "hoge", 23 puurs: false, 24 barks: false, 25 wags: false 26} 27 28let dog: Dog = both // error 29let cat: Cat = both // error 30 31dog = both_ 32cat = both_
試したこと
以下のようにすると、エラーが起こりませんでした。
typescript
1 2const hoge = { 3 name: "hoge", 4 puurs: false, 5 barks: true, 6 wags: true 7} 8let cat: Cat = hoge 9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。