【发布时间】:2020-03-25 10:49:49
【问题描述】:
首先,我的功能:
function randIntIncl(max: number): number;
function randIntIncl(min: number, max?: number): number {
if(max === undefined) {
max = min;
min = 0;
}
return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive
}
(信用MDN)
调用如下:
randIntIncl(1,9999)
我得到错误:
TS2554:预期有 1 个参数,但得到了 2 个。
我猜测 TypeScript 匹配第一个重载,然后出错。我不明白为什么它不尝试第二次重载? 9999 显然是一个数字,所以它应该匹配,不是吗?
我可以简单地省略第一个重载,一切都会很好,因为无论如何我都将max 设为可选,但我将重载放在那里是为了文档目的。当使用一个 arg 调用时,该 arg 是 max 而不是 min 正如第二个重载所暗示的那样。
所以我的问题是:
- 有没有办法让这个工作?我做错了什么吗?
- 或者这是“按设计”,我根本不应该创建模棱两可的重载?
【问题讨论】:
标签: typescript