type Foo = { [P in keyof T]: T[P] } function test(fn: (...args: Foo) => void) { const arr: Foo = {} as any fn(...arr) // Error: Argument of type 'any[]' is not assignable to parameter of type 'Foo' }