typescript - 如何在 TypeScript 中扩展原始类型?
问题描述
我试图通过添加一个方法来扩展number
TypeScript 中的原语。clamp
我试过这样做:
declare global {
interface Number {
clamp(min: number, max: number): number
}
}
Number.prototype.clamp = function(min, max): number {
return Math.min(Math.max(this, min), max);
};
此时我希望能够在number
变量上使用它,但我的 IDE(WebStorm 2021.1.3)已经指出了问题:
TS2345: Argument of type 'Number' is not assignable to parameter of type 'number'. 'number' is a primitive, but 'Number' is a wrapper object. Prefer using 'number' when possible.
阅读此内容后,我尝试更改interface Number
为interface number
,但遇到了TS2427: Interface name cannot be 'number'.
所以我恢复了我的更改并@ts-ignore
在钳位实现的错误行中打了一巴掌并尝试使用它......但是:
let x: number = 10;
x.clamp(0, 5); // TS2339: Property 'clamp' does not exist on type 'number'.
是什么赋予了?如何正确扩展 TypeScript 中的原始类型?
解决方案
推荐阅读
- html - 如何在css中显示随机句子
- excel - 如何遍历数据转储并将唯一值粘贴到两个单独的表中 [VBA]
- javascript - div高度计算不适用于移动设备
- java - 使用 GSON Java 在 JSON 中创建嵌套列表的列表
- javascript - 在页面滚动上平滑地显示html文本一个字母?
- c# - Blazor 单选按钮双向绑定不适用于属性
- javascript - 如何在jQuery的回调函数中嵌入一个函数?
- java - 是否可以在 Liquibase for Node.js 中使用上下文和标签?
- flutter - Flutter textField字体满时消失
- docker - docker 映像标识符是否可用于在该 docker 内运行的进程?