我正在尝试在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 --save
,npm 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)