Überladung des Konstruktors in TypeScript: Wie deklariert man mehrere Varianten korrekt?
Hallo! Ich habe gerade angefangen, TypeScript zu lernen, und bin auf das Problem der Konstruktorüberladung gestoßen. In der Dokumentation steht, dass TypeScript Funktionsüberladung unterstützt, aber ich kann es nicht für einen Klassenkonstruktor zum Laufen bringen.
Ich habe eine Klasse `User`, die verschiedene Parametersätze akzeptieren soll:
- Name und Alter (erforderlich)
- Nur Name (Alter standardmäßig 0)
- Ein Objekt mit den Feldern name und age
Hier ist, was ich versuche:
```typescript
class User {
name: string;
age: number;
constructor(name: string, age: number);
constructor(name: string);
constructor(obj: {name: string, age: number}) {
this.name = name;
this.age = age;
}
}
```
TypeScript beschwert sich: "Type '{name: string, age: number}' is not assignable to type 'string'". Ich verstehe, dass das Problem darin liegt, dass alle Signaturen kompatibel sein müssen, aber wie implementiert man die Konstruktorüberladung richtig?
Vielleicht gibt es einen anderen Weg, dies zu tun? Ich wäre dankbar für eine ausführliche Erklärung mit Beispielen.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen