typescriptの型ガードを使って、オブジェクトの型(リテラルによる型ガードを利用)を出し分けたいのですが、一つずつ絞り込むのではなく複数で絞り込みを行うことは出来ますか?
typescript
1 2type MultiType = TypeA | TypeB | TypeC | TypeD 3 4interface TypeA { 5 type: "A", 6 propA: {...} 7} 8 9interface TypeB { 10 type: "B", 11 propB: {...} 12} 13 14interface TypeC { 15 type: "C", 16 propC: {...} 17} 18 19interface TypeD { 20 type: "D", 21 propD: {...} 22} 23 24function checkType(what: MultiType) { 25 if(what.type === "A" || "B") { 26 ... // (1) 27 } else { 28 ... // (2) 29 } 30} 31
上記コードにおける関数checkType内で型毎に処理をしたいのですが、(1), (2)での引数whatの型がそれぞれ
(1) what: TypeA | TypeB
(2) what: TypeC | TypeD
となることを期待しますが、結果は
(1) what: MultiType
(2) what: TypeB | TypeC | TypeD
となってしまい困っています。型ガードは1つずつの絞り込みしかできないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/12 04:17
2022/01/12 08:58
2022/01/12 09:57