BigNumber的TypeScripttypes定义

我正在尝试在TypeScript程序中使用BigNumber版本4.0.2。 我创build了一个用TypeScript编写的简单Node.js程序的简化示例,该示例使用BigNumber来处理此问题https://github.com/naddison36/node-imports

我真的很努力得到TypeScript 2.3.4拉入BigNumber的types定义。 有谁知道如何做到这一点? 这是我迄今为止所尝试的https://github.com/naddison36/node-imports#attempts-to-get-the-bignumber-type-definitions-to-work

理想情况下,我想简单地运行npm install bignumber.js --savenpm install @types/bignumber.js --save ,使用ES6 import BigNumber from 'bignumber.js' TypeScript正常工作。

任何帮助,将不胜感激

导入样式

 import BigNumber from 'bignumber.js'; 

只有当库指定了一个默认的导出,但正如你在github仓库中注意到的。

从export = BigNumber;更改第10行 导出默认的BigNumber; 修复上面的错误,但是引入了下面的错误:

错误:(6,15)TS2709:不能使用名称空间“BigNumber”作为types。

这是因为bignumber.js的types是使用namespace来声明的,而不是module 。 我不确定你是否可以像现在这样来解决这个问题,但是如何改变他们,从一开始就是这样

 export default BigNumber; declare module 'bignumber.js' { var BigNumber: BigNumberStatic; 

代替

 declare var BigNumber: BigNumber.BigNumberStatic; export as namespace BigNumber; export = BigNumber; declare namespace BigNumber { 

在bignumber.js的所有正常import中工作正常

 import * as b from 'bignumber.js' new b.BigNumber(123) import b from 'bignumber.js' new b(123) import {BigNumber} from 'bignumber.js' new BigNumber(123) 

所以这样做似乎工作:

 import * as BigNumber from 'bignumber.js'; const result: BigNumber.BigNumber = new BigNumber(2); 

可能的解释:

types声明一个名为BigNumber的variables和名称空间:

 declare var BigNumber: BigNumber.BigNumberStatic; export as namespace BigNumber; 

在导入代码中,导入为* as BigNumber是指名称空间,而new BigNumber的名称则指向声明的variables。