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