我试图在一个BigNumber程序中使用TypeScript版本4.0.2。我已经创建了一个用TypeScript编写的简单TypeScript程序的简化示例,它使用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、使用ES6导入(如import BigNumber from 'bignumber.js' ),并让TypeScript只工作。
如能提供任何帮助,将不胜感激。
发布于 2017-06-17 18:52:59
进口风格
import BigNumber from 'bignumber.js';只有当库指定默认导出时才能工作,但正如您在github存储库中所注意到的那样。
将第10行从export =BigNumber中更改;以导出默认的BigNumber;修复上述错误,但引入以下错误: 错误:(6,15) as 2709:不能使用命名空间'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)发布于 2017-06-17 14:16:23
因此,这样做似乎是可行的:
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引用的是名称空间,而new BigNumber中的引用的是声明的变量。
https://stackoverflow.com/questions/44605322
复制相似问题