Zum Inhalt springen

Überladungen

Funktionsüberladungen in TypeScript ermöglichen es Ihnen, mehrere Funktionssignaturen für einen einzelnen Funktionsnamen zu definieren. So können Sie Funktionen definieren, die auf unterschiedliche Weise aufgerufen werden können. Hier ist ein Beispiel:

// Überladungen
function sayHi(name: string): string;
function sayHi(names: string[]): string[];
// Implementierung
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'); // Gültig
sayHi(['aa', 'bb']); // Gültig

Hier ist ein weiteres Beispiel für die Verwendung von Funktionsüberladungen innerhalb einer class:

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