Open1

JSON.parse(JSON.stringify(x))をオブジェクトのコピーに使ってない??危ないよ

あいや - aiya000あいや - aiya000

実務で、オブジェクトのディープコピーにJSON.parse(JSON.stringify(x))を使っていたのを、Property Based Testingして気づいた。
これをTypeScriptで使うと、完全に型安全性を破壊する…。

const clone = <T>(source: T): T => JSON.parse(JSON.stringify(source))

const x: undefined = clone([undefined])[0]
console.log(x) // null
// undefined型の変数にnullが入っている

まあimplicit any使ってるしね、何が起きてもおかしくない。

NaNやInfinityでも同じことが起こる。
↓を参照してください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify