无法在打字稿版本 3.1.6 中使用 BigInt。错误 TS2304:找不到名称 'BigInt'

Unable to use BigInt in typescript version 3.1.6. error TS2304: Cannot find name 'BigInt'

我想在 Typescript 中使用 BigInt

    private AND = (left: BitwiseNumber, right: BitwiseNumber) => {
     return BigInt(left) & BigInt(right);
    }

但它给了我这个错误:

src/dir/file-name.ts(190,10): error TS2304: Cannot find name 'BigInt'.

为了解决 question which cited this 文档的这个检查答案,建议我在文件 tsconfig.json.

中添加 "target": "esnext" & "lib": ["esnext.bigint"]

但是我的 tsconfig.json 文件已经在 targetlib 中包含这些值,如下所示:

    "target": "es2018",
    "lib": ["es2018"],

现在,如果我将 target 的值从 es-2018 更改为 esnext。它开始抛出其他错误。所以,我的问题是我还能在 3.1.6 版本中使用 BigInt 吗?如果 Not 在此版本中是否有 BigInt 的替代项?

我的 Typescript 版本是 3.1.6

如评论中所述,BigInt support was added to TypeScript with the release of TypeScript 3.2

如果您无法升级(这很不幸,因为 TypeScript 的变化速度很快,这成为技术债务的重要来源),那么您不能直接使用 BigInt

这里的一种方法是改用第三方任意精度整数库。这不可能是完全透明的替代;不可能填充语法。因此,您将无法使用像 123n 这样的 BigInt 文字或像 BigInt(3) * BigInt(5) 这样的重载数字运算符。相反,您需要使用提供此类行为的方法或函数。

我不认为这是提倡特定库的地方,所以我将只使用我在搜索时首先找到的库:BigInteger.js,在 npm 中发布为 big-integer :

import bigInt from "big-integer";

那么你上面的代码将需要使用 and() method 作为位与而不是 & 运算符:

  private AND = (left: BitwiseNumber, right: BitwiseNumber) => {
    return bigInt(left).and(bigInt(right));
  };

好的,希望对您有所帮助;祝你好运!

Playground link to code