【发布时间】:2019-03-05 23:58:59
【问题描述】:
如果调用BigNumber.toString,是否可以使用TypeScript触发编译时错误?
具体来说,我的应用程序遇到了错误,因为BigNumber.toString() 将用科学计数法表示足够大和足够小的数字:
> x = new BigNumber('0.00000000001')
> x.toString()
'1e-10'
> x.toFixed()
'0.00000000001'
我尝试过覆盖类型:
import {BigNumber} from "bignumber.js";
declare module "bignumber.js" {
interface BigNumber {
toString: never
someOtherThing: number
}
}
但这似乎不起作用(并且添加了someOtherThing 字段,所以我知道正在加载类型定义)
如果使用BigNumber.toString,如何触发编译错误?
(另外,请注意:我设置了BigNumber.config({ EXPONENTIAL_AT: 1e+9 }) 并重载了BigNumber.toString,因此它会发出警告,但如果添加编译错误会很好)
【问题讨论】:
-
我无法遵循您的代码..您正在导入
BigNumber,但随后立即将同名声明为接口。这不应该被允许编译。我知道您正在尝试覆盖该类型,但我不希望这是应该这样做的。如果我错了,请纠正我,如果是这样,我很想学习。我会创建自己的类,它使用 BigNumber,包装方法,并为toString方法返回''。 -
@StevenStark 这是用于扩展接口的 TypeScript 语法(滚动到“Augmenting”):typescriptlang.org/docs/handbook/declaration-merging.html
-
谢谢,我没有意识到这只是一个 TS 约定。这些天我一直在专门使用 Flow。
标签: javascript typescript bignum