
JSでシリアライザブルデータとノンシリアライザブルデータの違いは何か
Reduxのドキュメントを読んでいたら、こういう文章を見つけました。
Do Not Put Non-Serializable Values in State or Actions
Non-Serializable Valuesってなんだろうと思いまして、
調べてたらこういう記事を見つけました。
この記事によると、
シリアライズとは、情報を失うことなくデータをピュアテキストに変換できることを意味するようです。
通常、JSでシリアライズというと、次のようなことができるという意味になるとのこと。
const data = { foo: 'bar', };
const data2 = JSON.parse(JSON.stringify(data));
上記のプログラムを実行した後、
dataとdata2には全く同じデータが入っていることになる。
つまり、データを文字列に変換しても、
情報を失わずにデシリアライズすることができるものであり、
toString()メソッドを定義することで、独自のシリアル化可能なオブジェクトを定義することがでるということでしょうね。
結論としては、オブジェクトがシリアル化されているかどうかわからない場合は、
正しく文字列にコンバートできるかを確認すればよさそうですね。