柳嘉希

硕士研究生毕业生

软件工程师 | 可扩展的API · 网络爬虫 · 数据集成 · Vibe代码清理专家

TypeScript 函数、默认参数、剩余参数与 async/await

函数是 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: [] };
}

这样调用方可以获得更好的类型提示,也能减少接口变更时的隐性错误。