Open1
JSON.parse(JSON.stringify(x))をオブジェクトのコピーに使ってない??危ないよ
実務で、オブジェクトのディープコピーに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でも同じことが起こる。
↓を参照してください。