Fehler TS2322: „could be instantiated with a different subtype of constraint 'object'“ — wie beheben?
Hallo! Ich bin neu in TypeScript und bin auf einen seltsamen Fehler bei der Verwendung von Generics gestoßen.
Ich habe eine einfache Funktion, die ein Objekt entgegennehmen und seine Schlüssel zurückgeben soll. Ich möchte, dass die Funktion mit jedem Objekt funktioniert, aber den Rückgabetyp als Array der Schlüssel genau dieses Objekts beibehält.
Hier ist mein Code:
```typescript
function getKeys(obj: T): (keyof T)[] {
return Object.keys(obj) as (keyof T)[];
}
function processObject(data: T) {
// Hier möchte ich data an eine andere Funktion übergeben
const handler = (input: U): void => {
const keys = getKeys(input);
console.log(keys);
};
handler(data); // FEHLER hier!
}
```
TypeScript gibt einen Fehler aus:
`Argument of type 'T' is not assignable to parameter of type 'U'.
'U' could be instantiated with a different subtype of constraint 'object'.`
Ich verstehe nicht, warum das passiert. Schließlich sind sowohl T als auch U auf den Typ `object` eingeschränkt. Warum beschwert sich TypeScript?