在写单元测试中,我想抽象一个通用的函数,避免重复书写。函数的定义如下: export function defineUnitTest ( name: string, fn: (...args: any) => R, // 这里 source 参数的类型应该对应 fn 函数的参数类型 source: any, expected: R, ) { it(name, () => { expect(fn(...source)).toEqual(expected); }); } declare function twoSum (nums: number[], target: number): number[]; // 使用这个函数时,第三个参数的类型应该是通过第二个参数推断出来的。 defineUnitTest("some desc", twoSum, [[2, 7, 11, 15], 9], [0, 1]); 但是我不知道如果建立 fn 函数参数的类型和 source 类型之间的联系。 请问要怎么写才可以让 source 的类型等于 fn 参数类型的数组?