teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

内容修正

2022/01/11 16:15

投稿

yochun02
yochun02

スコア76

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,4 @@
40
40
  となることを期待しますが、結果は
41
41
  (1) what: MultiType
42
42
  (2) what: TypeB | TypeC | TypeD
43
- となってしまい困っています。
43
+ となってしまい困っています。型ガードは1つずつの絞り込みしかできないのでしょうか?

1

補足説明

2022/01/11 16:15

投稿

yochun02
yochun02

スコア76

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ```typescript
4
4
 
5
- type MultiType = TypeA | TypeB | TypeC
5
+ type MultiType = TypeA | TypeB | TypeC | TypeD
6
6
 
7
7
  interface TypeA {
8
8
  type: "A",
@@ -19,8 +19,11 @@
19
19
  propC: {...}
20
20
  }
21
21
 
22
+ interface TypeD {
23
+ type: "D",
24
+ propD: {...}
25
+ }
22
26
 
23
-
24
27
  function checkType(what: MultiType) {
25
28
  if(what.type === "A" || "B") {
26
29
  ... // (1)
@@ -33,8 +36,8 @@
33
36
 
34
37
  上記コードにおける関数checkType内で型毎に処理をしたいのですが、(1), (2)での引数whatの型がそれぞれ
35
38
  (1) what: TypeA | TypeB
36
- (2) what: TypeC
39
+ (2) what: TypeC | TypeD
37
40
  となることを期待しますが、結果は
38
41
  (1) what: MultiType
39
- (2) what: TypeB | TypeC
42
+ (2) what: TypeB | TypeC | TypeD
40
43
  となってしまい困っています。