log
码中赤兔

TypeScript里实现函数重载

发布于 2024年12月26日
更新于 2024年12月26日
5 分钟阅读
TypeScript

在 TypeScript 中,函数重载允许你为一个函数提供多个函数简要。通过函数重载,你可以实现在同一函数名下支持多种参数和返回值类型。这里我们将通过两个示例来认识 TypeScript 中函数重载的使用方式和最佳实践。


示例一:在类中实现函数重载

export class BookService {
  /**
   * get book by id
   * @param id book id
   * @returns book
   */
  getBook(id: string): Book;

  /**
   * get book by condition
   * @param condition book condition
   * @returns book list
   */
  getBook(condition: { title?: string; publishTime?: Date }): Book[];

  public getBook(condition: string | { title?: string; publishTime?: Date }): Book | Book[] {
    if (typeof condition === 'string') {
      // logic to get book by id
      return {} as Book;
    }
    // logic to get book by condition
    return [{} as Book];
  }
}

示例二:在普通函数中使用函数重载

/**
 * get book by id
 * @param id book id
 * @returns book
 */
export function getBook(id: string): Book;

/**
 * get book by condition
 * @param condition book condition
 * @returns book list
 */
export function getBook(condition: { title?: string; publishTime?: Date }): Book[];

export function getBook(condition: string | { title?: string; publishTime?: Date }): Book | Book[] {
  if (typeof condition === 'string') {
    // logic to get book by id
    return {} as Book;
  }
  // logic to get book by condition
  return [{} as Book];
}

总结

在 TypeScript 中,函数重载是一种很有用的功能,适合解决同一作用下的不同场景。根据实际需求,你可以在类中或选择单独函数重载方式,以更好地符合项目策略。

关于

分享技术见解、经验和思考的个人博客

联系方式

  • Email: hushukang_blog@proton.me
  • GitHub

© 2025 码中赤兔. 版权所有