使用 TypeScript 在使用 BigNumber.toString 时会触发编译错误?
Use TypeScript to trigger a compile error when BigNumber.toString is used?
如果调用 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
所以它会发出警告,但是添加编译错误会很好)
Is it possible to use TypeScript to trigger a compile-time error if BigNumber.toString is called
选项很少
创建自定义 linter 规则
关于 tslint 的文档:https://palantir.github.io/tslint/develop/custom-rules/
您的自定义规则将是类型检查规则:https://palantir.github.io/tslint/usage/type-checking/
并将 BigNumber
上的 toString
调用更改为错误。
编辑安装类型
通过编辑已安装的 .d.ts
从 BigNumber 中删除 toString
方法并使用 PatchPackage 提交它:https://github.com/ds300/patch-package
创建包装器
或者围绕 BigNumber 创建一个包装器,它不会向其他开发人员公开您认为危险的任何内容
想法
我个人会使用补丁包作为更简单的方法。如果您在图书馆进行大量财务工作,请考虑为您的用例使用包装器。
如果调用 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
所以它会发出警告,但是添加编译错误会很好)
Is it possible to use TypeScript to trigger a compile-time error if BigNumber.toString is called
选项很少
创建自定义 linter 规则
关于 tslint 的文档:https://palantir.github.io/tslint/develop/custom-rules/ 您的自定义规则将是类型检查规则:https://palantir.github.io/tslint/usage/type-checking/
并将 BigNumber
上的 toString
调用更改为错误。
编辑安装类型
通过编辑已安装的 .d.ts
从 BigNumber 中删除 toString
方法并使用 PatchPackage 提交它:https://github.com/ds300/patch-package
创建包装器
或者围绕 BigNumber 创建一个包装器,它不会向其他开发人员公开您认为危险的任何内容
想法
我个人会使用补丁包作为更简单的方法。如果您在图书馆进行大量财务工作,请考虑为您的用例使用包装器。