函数是 TypeScript 类型系统中最常见的使用场景。参数类型、返回值类型和异步返回类型都应该尽量明确。
基本函数类型
function calculateDiscount(price: number, rate: number): number {
return price * rate;
}返回值可以省略让 TypeScript 推断,但在公共函数和复杂函数中显式写出更清晰。
默认参数
function calculateDiscount(price: number, rate: number = 0.5): number {
return price * rate;
}
calculateDiscount(1000);
calculateDiscount(1000, 0.3);默认参数可以减少重复调用配置。
剩余参数
function joinNames(prefix: string, ...names: string[]): string {
return `${prefix}: ${names.join(", ")}`;
}...names 表示可以接收任意多个字符串参数。
Promise 基础
异步函数通常返回 Promise<T>。
async function fetchUser(): Promise<{ id: string; name: string }> {
return { id: "1", name: "Alice" };
}async 会让函数自动返回 Promise,即使你 return 的是普通值。
await
await 用来等待 Promise 完成。
async function main() {
try {
const user = await fetchUser();
console.log(user.name);
} catch (error) {
console.error("Failed to fetch user", error);
}
}实践建议
异步函数建议明确返回值类型。
async function pullContacts(args: {
limit?: number;
page?: number;
}): Promise<ContactList> {
return { contacts: [] };
}这样调用方可以获得更好的类型提示,也能减少接口变更时的隐性错误。