在 TypeScript(以及 JavaScript ES6+)中,rest 参数(...args)允许你将一个不定数量的参数作为一个数组传入函数。这在处理可变数量的参数时非常有用,尤其是当你不知道会有多少参数被传入函数时。
作用:
- 收集参数:rest 参数可以收集函数被调用时传入的额外参数,并将它们放入一个数组中。
- 灵活性:它提供了函数参数处理的灵活性,允许函数接受可变数量的参数,而无需显式定义每个参数。
- 避免使用
arguments
对象:在 ES6 之前的 JavaScript 中,arguments
对象常被用于类似的目的,但它不是一个真正的数组,并且其行为在某些情况下可能令人困惑。Rest 参数提供了一个更清晰、更直观的方式来处理可变数量的参数。
规则:
- 语法:rest 参数使用三个点(...)后跟一个变量名来表示。例如,
...args
。 - 位置:rest 参数必须是函数参数列表中的最后一个参数。你不能在 rest 参数后面再定义其他参数。
- 类型:在 TypeScript 中,你可以为 rest 参数指定一个类型,这通常是一个数组类型,表示你可以期望传入的参数类型。例如,
...args: number[]
表示你期望传入一系列数字。 - 使用:在函数体内,rest 参数就像一个普通数组一样使用。你可以使用诸如
forEach
、map
等数组方法来处理它。
示例:
下面是一个简单的 TypeScript 示例,展示了如何使用 rest 参数:
function sum(...numbers: number[]): number {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3, 4)); // 输出 10
console.log(sum(5, 10, 15)); // 输出 30
在这个例子中,sum
函数接受任意数量的数字参数,并使用 reduce
方法计算它们的和。Rest 参数 ...numbers: number[]
收集所有传入的数字,并将它们作为一个数组处理。