İçeriğe geç

Aşırı Yüklemeler

TypeScript’te fonksiyon aşırı yüklemeleri, tek bir fonksiyon adı için birden fazla fonksiyon imzası tanımlamanıza ve böylece birden fazla şekilde çağrılabilen fonksiyonlar oluşturmanıza olanak tanır. İşte bir örnek:

// 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

Bir class içinde fonksiyon aşırı yüklemelerinin kullanımına ilişkin başka bir örnek:

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