У меня есть функция, которая принимает объект и возвращает новый с дополнительными свойствами. И я не могу понять, почему эта общая c типизация не работает.
const obj = { name: 'hello', id: 1 };
const transformObj = <T extends { name: string }>({ name, ...rest }: T): T & { newName: string } => ({
name,
newName: name + '1',
...rest,
});
Ссылка на игровую площадку
Она возвращает эту ошибку
Type '{ name: string; newName: string; } & Pick<T, Exclude<keyof T, "name">>' is not assignable to type 'T & { newName: string; }'. Type '{ name: string; newName: string; } & Pick<T, Exclude<keyof T, "name">>' is not assignable to type 'T'. '{ name: string; newName: string; } & Pick<T, Exclude<keyof T, "name">>' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint '{ name: string; }'.