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

質問編集履歴

3

編集

2019/07/20 01:48

投稿

TOMIYASU_chan
TOMIYASU_chan

スコア21

title CHANGED
File without changes
body CHANGED
@@ -4,9 +4,11 @@
4
4
  下記のif文の条件節内で型アサーションしてしまったら("(<Fish>pet).swim")
5
5
  それはは必ずtrueになって条件分岐の意味がなくなるのでは?
6
6
  と思いましたが、実行結果はコンソールに ’bird’ と出ます。
7
- これは型アサーションではないのでしょうか?
7
+
8
8
  常套手段としてはpet.hasOwnProperty('swim')と思うのですが・・・
9
9
  後続の 型述語 のコード内にも同様のものがみられます。
10
+
11
+ これは型アサーションではないのでしょうか?
10
12
  ここはどのように理解すべきでしょうか?
11
13
 
12
14
 

2

加筆

2019/07/20 01:48

投稿

TOMIYASU_chan
TOMIYASU_chan

スコア21

title CHANGED
File without changes
body CHANGED
@@ -6,9 +6,10 @@
6
6
  と思いましたが、実行結果はコンソールに ’bird’ と出ます。
7
7
  これは型アサーションではないのでしょうか?
8
8
  常套手段としてはpet.hasOwnProperty('swim')と思うのですが・・・
9
+ 後続の 型述語 のコード内にも同様のものがみられます。
9
10
  ここはどのように理解すべきでしょうか?
10
- 型アサーションの理解そのものが不安になります
11
11
 
12
+
12
13
  ```TypeScript
13
14
  interface Bird {
14
15
  fly(): void;
@@ -41,4 +42,11 @@
41
42
  console.log("bird");
42
43
  }
43
44
 
45
+ ```
46
+
47
+ ```TypeScript
48
+ function isFish(pet: Fish | Bird): pet is Fish {
49
+ return (<Fish>pet).swim !== undefined;
50
+ }
51
+
44
52
  ```

1

加筆

2019/07/20 01:47

投稿

TOMIYASU_chan
TOMIYASU_chan

スコア21

title CHANGED
File without changes
body CHANGED
@@ -7,8 +7,8 @@
7
7
  これは型アサーションではないのでしょうか?
8
8
  常套手段としてはpet.hasOwnProperty('swim')と思うのですが・・・
9
9
  ここはどのように理解すべきでしょうか?
10
+ 型アサーションの理解そのものが不安になります
10
11
 
11
-
12
12
  ```TypeScript
13
13
  interface Bird {
14
14
  fly(): void;