BigNumber的TypeScript类型定义

时间:2017-06-17 13:42:39

标签: node.js typescript

我试图在TypeScript程序中使用BigNumber版本4.0.2。我创建了一个用TypeScript编写的简单Node.js程序的简化示例,该程序使用BigNumber来解决这个问题 https://github.com/naddison36/node-imports

我真的很难让TypeScript 2.3.4引入BigNumber的类型定义。有谁知道如何做到这一点?这是我迄今为止所尝试过的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,使用像import BigNumber from 'bignumber.js'这样的ES6导入,让TypeScript正常工作。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

导入样式

import BigNumber from 'bignumber.js';

仅当库指定了默认导出时才有效,但正如您在github存储库中所述。

  

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

     

错误:(6,15)TS2709:不能将命名空间“BigNumber”用作类型。

这是因为bignumber.js的输入是使用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 * 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)

答案 1 :(得分:0)

这样做似乎有效:

"pain relief"

可能的解释:

这种类型声明了一个名为import * as BigNumber from 'bignumber.js'; const result: BigNumber.BigNumber = new BigNumber(2); 的变量和命名空间:

BigNumber

在导入代码中,导入为declare var BigNumber: BigNumber.BigNumberStatic; export as namespace BigNumber; 的内容引用了名称空间,而* as BigNumber中的名称引用了声明的变量。