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

回答編集履歴

2

注意点に補足

2019/09/20 01:56

投稿

maisumakun
maisumakun

スコア146672

answer CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  そういうのとは関係なく、これは**コードの書き方が悪い**です。実際に`T`や`U`へ`Object.create(null)`などで作った`hasOwnProperty`のないオブジェクトを渡せる以上、~~`result.hasOwnProperty`は**呼べないこともある**前提で書く必要があります。~~`T & U`型に`hasOwnProperty`があることは保証されません。
4
4
 
5
- `T`や`U`に関数でない`hasOwnProperty`がセットしてあるという危険性も考えると、`result.hasOwnProperty`に頼るのは適当ではありません。`Object.prototype.hasOwnProperty.call`を使ってください。
5
+ さらに言えば、`T`や`U`に関数でない`hasOwnProperty`がセットしてあるという危険性も考えると、`result.hasOwnProperty`に頼るのは適当ではありません。`Object.prototype.hasOwnProperty.call`を使ってください(これはTypeScriptでないJavaScriptを書く際にも共通します)

1

一部おかしかったので修正

2019/09/20 01:56

投稿

maisumakun
maisumakun

スコア146672

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  > TypeScriptにおいて、型を特定した途端にいわゆるJavaScriptとしての継承は断ち切られれるのだろうか?
2
2
 
3
- そういうのとは関係なく、これは**コードの書き方が悪い**です。実際に`T`や`U`へ`Object.create(null)`などで作った`hasOwnProperty`のないオブジェクトを渡せる以上、`result.hasOwnProperty`は**呼べないこともある**前提で書く必要があります。
3
+ そういうのとは関係なく、これは**コードの書き方が悪い**です。実際に`T`や`U`へ`Object.create(null)`などで作った`hasOwnProperty`のないオブジェクトを渡せる以上、~~`result.hasOwnProperty`は**呼べないこともある**前提で書く必要があります。~~`T & U`型に`hasOwnProperty`があることは保証されません。
4
4
 
5
- `Object.prototype.hasOwnProperty.call`を使ってください。
5
+ `T`や`U`に関数でない`hasOwnProperty`がセットしてあるという危険性も考えると、`result.hasOwnProperty`に頼るのは適当ではありません。`Object.prototype.hasOwnProperty.call`を使ってください。