【发布时间】:2021-03-17 00:38:30
【问题描述】:
我正在寻找一种方法来强制JSON.stringify 始终打印BigInts 而不会抱怨。
我知道它是非标准的,我知道有一个纯 JavaScript 的包;但它不符合我的需要。我什至知道通过设置BigInt.prototype.toJSON 可以修复原始 JavaScript。我需要的是某种方式在我的 TypeScript 代码中全局覆盖普通的 JSON.stringify 函数。
大约一年前,我发现了以下代码:
declare global
{
interface BigIntConstructor
{
toJSON:()=>BigInt;
}
}
BigInt.toJSON = function() { return this.toString(); };
在某些网页上我无法再次找到。它曾经在我的另一个项目中工作,但它似乎不再工作了。我不知道为什么。
无论我对上面的行做什么,如果我尝试打印一个包含 BigInt 的 JSON,我会得到:TypeError: Do not know how to serialize a BigInt。
任何帮助表示赞赏 - 非常感谢提前。
【问题讨论】:
-
不应该是
toJSON:()=>BigInt是toJSON:(num: BigInt)=>string? -
当我发现代码 sn-p 时问了自己同样的问题。那时它不起作用;它现在不起作用(这是我作为健全性检查测试的事情之一......)。这段代码 sn-p 仍然让我感到困惑。顺便说一句,我尝试了更多,我认为它不再起作用的原因可能与我的
tsconfig.json有关;但我不确定我需要做什么才能让它再次工作;如果它甚至与我当前的“目标”需求兼容。
标签: json typescript global bigint