我正在尝试在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正常工作。

任何帮助,将不胜感激

最佳答案

导入样式

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)

09-25 17:07