回答編集履歴
2
注意点に補足
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
一部おかしかったので修正
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`を使ってください。
|