Bỏ qua nội dung

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ụ:

// Overloads
function sayHi(name: string): string;
function sayHi(names: string[]): string[];
// Implementation
function 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'); // Valid
sayHi(['aa', 'bb']); // Valid

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>;
// implementation
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'));