この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
144. JSON data type以外のdata typeをserialize/deserializeする

function parse(string: string) {  return JSON.parse(    string,    (key, value) => {      if (typeof value === 'string' && /^([+\-]?\d+(?:\.\d+)?)([nbsf]|$)/.test(value)) {        // BigInt, NaN, Infinity, -Infinity を判別し正しい型に変換する        const [, numStr, type] = value.match(/^([+\-]?\d+(?:\.\d+)?)([nbsf]|$)/)!;        switch (type) {          case 'n':            return BigInt(numStr + 'n');          case 'b':            return NaN;          case 's':            return Infinity;          case 'f':            return -Infinity;          default:            return value;        }      }      return value;    }  );}function stringify(data: any) {  return JSON.stringify(    data,    (key, value) => {      if (typeof value === 'bigint') {        return value.toString() + 'n';      }      if (value === Infinity) {        return 'Infinity';      }      if (value === -Infinity) {        return '-Infinity';      }      if (Number.isNaN(value)) {        return 'NaN';      }      return value;    }  );}

このコードでは、JSON.parse() と JSON.stringify() を使用します。JSON.stringify() は、BigInt、NaN、Infinity、-Infinityを対処するために変更されたカスタム関数を使用しています。JSON.parse() は、カスタム復号化関数を使用して、serializeされた値から正しい型に変換します。