Erro TS2322: "could be instantiated with a different subtype of constraint 'object'" — como corrigir?
Olá! Sou novo em TypeScript e me deparei com um erro estranho ao usar generics.
Tenho uma função simples que deve aceitar um objeto e retornar suas chaves. Quero que a função funcione com qualquer objeto, mas mantenha o tipo de retorno como um array de chaves desse objeto.
Aqui está meu código:
```typescript
function getKeys(obj: T): (keyof T)[] {
return Object.keys(obj) as (keyof T)[];
}
function processObject(data: T) {
// Aqui quero passar data para outra função
const handler = (input: U): void => {
const keys = getKeys(input);
console.log(keys);
};
handler(data); // ERRO aqui!
}
```
TypeScript exibe o erro:
`Argument of type 'T' is not assignable to parameter of type 'U'.
'U' could be instantiated with a different subtype of constraint 'object'.`
Não entendo por que isso acontece. Afinal, tanto T quanto U são restritos ao tipo `object`. Por que o TypeScript...