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 --save
, npm 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。