回答編集履歴

2

注意点に補足

2019/09/20 01:56

投稿

maisumakun
maisumakun

スコア145186

test CHANGED
@@ -6,4 +6,4 @@
6
6
 
7
7
 
8
8
 
9
- `T`や`U`に関数でない`hasOwnProperty`がセットしてあるという危険性も考えると、`result.hasOwnProperty`に頼るのは適当ではありません。`Object.prototype.hasOwnProperty.call`を使ってください。
9
+ さらに言えば、`T`や`U`に関数でない`hasOwnProperty`がセットしてあるという危険性も考えると、`result.hasOwnProperty`に頼るのは適当ではありません。`Object.prototype.hasOwnProperty.call`を使ってください(これはTypeScriptでないJavaScriptを書く際にも共通します)

1

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

2019/09/20 01:56

投稿

maisumakun
maisumakun

スコア145186

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