Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第3章:函数

第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. 实际应用场景

  1. 数学运算:如可变参数的加法、乘法。
  2. 日志函数:动态接收日志消息和元数据。
  3. 事件处理:捕获多个事件参数。

6. 注意事项

  • 剩余参数与数组展开语法(Spread Syntax)不同,后者用于解构数组。
  • 避免在重载函数中过度使用剩余参数,可能导致签名冲突。

扩展阅读
剩余参数是 ES6 特性,TypeScript 通过类型系统增强了它的安全性。在编译后会转换为普通的 JavaScript 数组操作。

Last Updated:: 3/27/25, 10:50 AM