TypeScript剩余参数如何修改以支持undefined类型?
TypeScript剩余参数支持undefined的类型修正方案
需求:修改maximum函数的剩余参数类型,允许参数中包含undefined,函数体无需修改(内部的if条件会自动忽略undefined值)。
原函数代码:
function maximum(...numbers: Array<number>) { let max = -Infinity; for (const n of numbers) { if (n !== undefined && n > max) { max = n; } } return max; }
你的错误尝试问题分析:
你写的Array<number> | undefined不符合剩余参数的类型规则——剩余参数本身是把传入的所有参数收集为一个数组,所以类型应该定义数组的元素类型,而不是让整个参数变成「数组或undefined」的二选一。这种写法会导致TypeScript认为numbers可能是undefined,直接用for...of遍历会报错,同时也无法实现「每个参数可以是number或undefined」的需求。
正确修改方案:
将剩余参数的类型改为元素为number | undefined的数组,可以写成Array<number | undefined>或者更简洁的(number | undefined)[]:
function maximum(...numbers: (number | undefined)[]) { let max = -Infinity; for (const n of numbers) { if (n !== undefined && n > max) { max = n; } } return max; }
说明:
修改后,函数可以接受包含undefined的参数列表,比如maximum(5, undefined, 10, 3),函数内部的判断逻辑会自动跳过undefined值,符合题目要求。
内容的提问来源于stack exchange,提问作者0xhaz
相关产品推荐
相关产品推荐

