如果调用了BigNumber.toString
,是否可以使用TypeScript触发编译时错误?
具体来说,我的应用程序遇到了bug,因为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
}
}
但这似乎不起作用(并且添加了ojit_code字段,因此我知道正在加载类型定义)
如果使用
someOtherThing
,如何触发编译错误?(另外,请注意:我已经设置了
BigNumber.toString
和重载的BigNumber.config({ EXPONENTIAL_AT: 1e+9 })
,因此它会发出警告,但最好添加附加的编译错误) 最佳答案
很少的选择
创建自定义棉绒规则
tslint上的文档:https://palantir.github.io/tslint/develop/custom-rules/
您的自定义规则将是类型检查规则:https://palantir.github.io/tslint/usage/type-checking/
并将toString
上的BigNumber
调用更改为错误。
编辑安装类型
通过编辑已安装的toString
并使用PatchPackage提交,从BigNumber中删除.d.ts
方法:https://github.com/ds300/patch-package
创建一个包装器
或者,在BigNumber周围创建一个包装器,该包装器不会向开发人员暴露任何您认为危险的东西🌹
思想
我个人会使用补丁程序包作为更简单的方法。如果您要使用库进行大量财务工作,请考虑使用包装。