Closed
Description
TypeScript Version: 3.7.0-dev.20190924
Search Terms: destructure spread generic
Code
function test<T extends {key: number}>({key, ...rest}: T): T {
return {key: 10, ...rest}
}
Expected behavior:
No type errors
Actual behavior:
Type '{ key: number; } & Pick<T, Exclude<keyof T, "key">>' is not assignable to type 'T'.
'{ key: number; } & Pick<T, Exclude<keyof T, "key">>' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint '{ key: number; }'.