第3章:函数
剩余参数(Rest Parameters)
1. 基本概念
剩余参数(Rest Parameters)允许函数接受不定数量的参数作为数组。它通过 ... 语法将剩余的参数收集到一个数组中,是处理可变参数列表的优雅方式。
function sum(...numbers: number[]): number {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3)); // 输出: 6
2. 语法规则
- 剩余参数必须是最后一个参数。
- 类型注解为数组类型(如
...args: string[])。 - 与 JavaScript 的
arguments对象不同,剩余参数是真正的数组,支持数组方法。
3. 与普通参数结合使用
剩余参数可以与其他固定参数一起使用,但需遵循顺序规则:
function greet(greeting: string, ...names: string[]) {
console.log(`${greeting}, ${names.join(' and ')}!`);
}
greet("Hello", "Alice", "Bob"); // 输出: Hello, Alice and Bob!
4. 类型安全优势
TypeScript 会静态检查剩余参数的类型,避免运行时错误:
// 错误示例:非数字参数会触发类型错误
sum(1, "2"); // Error: Argument of type 'string' is not assignable to parameter of type 'number'.
5. 实际应用场景
- 数学运算:如可变参数的加法、乘法。
- 日志函数:动态接收日志消息和元数据。
- 事件处理:捕获多个事件参数。
6. 注意事项
- 剩余参数与数组展开语法(Spread Syntax)不同,后者用于解构数组。
- 避免在重载函数中过度使用剩余参数,可能导致签名冲突。
扩展阅读
剩余参数是 ES6 特性,TypeScript 通过类型系统增强了它的安全性。在编译后会转换为普通的 JavaScript 数组操作。
