函数类型定义
基本语法
// 函数声明
function greet(name: string): string {
return `Hello, ${name}`
}
// 箭头函数
const add = (a: number, b: number): number => a + b
// 函数类型表达式
type GreetFn = (name: string) => string
const greet2: GreetFn = (name) => `Hello, ${name}`
typescript
可选参数与默认值
// 可选参数(用?标记,必须在必选参数后面)
function createUser(name: string, age?: number): User {
return { name, age: age ?? 0 }
}
// 默认值参数
function createUser2(name: string, role: string = 'user'): User {
return { name, role }
}
typescript
剩余参数
function sum(...numbers: number[]): number {
return numbers.reduce((acc, cur) => acc + cur, 0)
}
typescript
回调函数类型
// 定义回调函数类型
type Callback = (data: string, error?: Error) => void
function fetchData(url: string, callback: Callback): void {
// 模拟异步操作
setTimeout(() => callback('data'), 1000)
}
typescript
函数作为参数传递
在NestJS等框架中,函数类型常用于定义中间件、守卫等的签名:
type MiddlewareFn = (req: Request, res: Response, next: NextFunction) => void
typescript
↑