質問編集履歴
2
内容修正
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
補足説明
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
|
となってしまい困っています。
|