我试图在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正常工作。
任何帮助将不胜感激
答案 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
中的名称引用了声明的变量。