Overload
Function overload trong TypeScript cho phép bạn định nghĩa nhiều chữ ký hàm cho một tên hàm duy nhất, nhờ đó có thể định nghĩa các hàm được gọi theo nhiều cách. Dưới đây là một ví dụ:
// Các overloadfunction sayHi(name: string): string;function sayHi(names: string[]): string[];
// Phần triển khaifunction sayHi(name: unknown): unknown { if (typeof name === 'string') { return `Hi, ${name}!`; } else if (Array.isArray(name)) { return name.map(name => `Hi, ${name}!`); } throw new Error('Invalid value');}
sayHi('xx'); // Hợp lệsayHi(['aa', 'bb']); // Hợp lệDưới đây là một ví dụ khác về sử dụng function overload trong một class:
class Greeter { message: string;
constructor(message: string) { this.message = message; }
// overload sayHi(name: string): string; sayHi(names: string[]): ReadonlyArray<string>;
// phần triển khai sayHi(name: unknown): unknown { if (typeof name === 'string') { return `${this.message}, ${name}!`; } else if (Array.isArray(name)) { return name.map(name => `${this.message}, ${name}!`); } throw new Error('value is invalid'); }}console.log(new Greeter('Hello').sayHi('Simon'));