函数类型与重载
约 260 字小于 1 分钟
布欧-Lewyon
2026-05-16
首页 › TypeScript › 函数与泛型 › 函数类型与重载
函数类型签名
// 完整类型签名
type GreetFn = (name: string, age?: number) => string;
const greet: GreetFn = (name, age) => {
return age ? `${name}(${age}岁)` : name;
};可选与默认参数
function createUser(
name: string,
age?: number, // 可选参数
role: string = 'user' // 默认参数
): { name: string; age?: number; role: string } {
return { name, age, role };
}函数重载
// 重载签名(多个)
function makeDate(timestamp: number): Date;
function makeDate(year: number, month: number, day: number): Date;
// 实现签名(一个,兼容所有重载)
function makeDate(
yearOrTimestamp: number,
month?: number,
day?: number
): Date {
if (month !== undefined && day !== undefined) {
return new Date(yearOrTimestamp, month - 1, day);
}
return new Date(yearOrTimestamp);
}
makeDate(12345678); // ✅
makeDate(2026, 5, 16); // ✅
// makeDate(2026, 5); // ❌ 不匹配任何重载小结
| 概念 | 说明 |
|---|---|
| 函数类型 | 完整签名 (param: type) => ReturnType |
| 可选参数 | param?: type,必须放在必选参数后 |
| 重载 | 多个签名 + 一个兼容的实现 |
上一节:字面量类型与索引签名 下一节:泛型基础
