Lewati ke konten

Overload

Overload fungsi dalam TypeScript memungkinkan Anda mendefinisikan beberapa signature fungsi untuk satu nama fungsi, sehingga Anda dapat mendefinisikan fungsi yang bisa dipanggil dengan berbagai cara. Berikut contohnya:

// Overload
function sayHi(name: string): string;
function sayHi(names: string[]): string[];
// Implementasi
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

Berikut contoh lain penggunaan overload fungsi di dalam sebuah class:

class Greeter {
message: string;
constructor(message: string) {
this.message = message;
}
// overload
sayHi(name: string): string;
sayHi(names: string[]): ReadonlyArray<string>;
// implementasi
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'));