Node.js BigNumber的类型脚本类型定义

Node.js BigNumber的类型脚本类型定义,node.js,typescript,Node.js,Typescript,我正在尝试在TypeScript程序中使用版本4.0.2。我已经创建了一个简单的Node.js程序的简化示例,该程序是用TypeScript编写的,在这个问题上使用BigNumber 我真的很难让TypeScript 2.3.4引入BigNumber的类型定义。有人知道怎么做吗?这是我到目前为止试过的 理想情况下,我只想运行npm install bignumber.js--save,npm install@types/bignumer.js--save,使用ES6导入,比如import bi

我正在尝试在TypeScript程序中使用版本4.0.2。我已经创建了一个简单的Node.js程序的简化示例,该程序是用TypeScript编写的,在这个问题上使用BigNumber

我真的很难让TypeScript 2.3.4引入BigNumber的类型定义。有人知道怎么做吗?这是我到目前为止试过的

理想情况下,我只想运行
npm install bignumber.js--save
npm install@types/bignumer.js--save
,使用ES6导入,比如
import bignumber from'bignumber.js'
,让TypeScript正常工作


任何帮助都将不胜感激

因此这样做似乎有效:

import * as BigNumber from 'bignumber.js';
const result: BigNumber.BigNumber = new BigNumber(2);
可能的解释:

类型声明了一个变量和一个名称空间,两者都命名为
BigNumber

declare var BigNumber: BigNumber.BigNumberStatic;
export as namespace BigNumber;
在导入代码中,作为
*作为BigNumber导入的内容是指命名空间,
新BigNumber
中的内容是指声明的变量。

导入样式

import BigNumber from 'bignumber.js';
仅当库指定了默认导出时才有效,但正如您在github存储库中所注意到的那样

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

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

这是因为bignumber.js的类型是使用
名称空间
而不是
模块
声明的。我不确定你能不能像现在这样处理打字,但要改变它们,这样才能开始

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)

谢谢,您刚刚从我的项目中删除了200多个TypeScript错误。我将提交类型定义的PR。感谢打开PR,让世界变得更美好是的,这将起作用。但是,问题是您必须使用
BigNumber.BigNumber
作为类型。缩短这个过程的一种方法是从“bigname.js”中将“import*作为bigname导入”;类型BN=BigNumber.BigNumber;常量结果:BN=新的大数(2);`但这引入了一个额外的类型定义行,我希望避免使用它