Node.js BigNumber的类型脚本类型定义
我正在尝试在TypeScript程序中使用版本4.0.2。我已经创建了一个简单的Node.js程序的简化示例,该程序是用TypeScript编写的,在这个问题上使用BigNumber 我真的很难让TypeScript 2.3.4引入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
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);`但这引入了一个额外的类型定义行,我希望避免使用它