如何在TypeScript接口属性中推断transformArgs返回值类型?
问题描述
我实现了一个记忆化函数(memoizer),可在参数比较前对其进行转换,示例代码如下:
function sum(x: number, y: number) { return x + y; } const memoSum = memo(sum, { // 接收数字数组([x, y])并转换为字符串(如`${x},${y}`) transformArgs: (args) => args.join(','), // 接收转换后的参数(此例中为字符串) isEqual(a, b) => a === b })
请问是否可以编写一个接口,仅当提供transformArgs时,自动推断isEqual的参数a和b的类型?期望的接口形式如下:
interface MemoOptions<F extends AnyFunction> { transformArgs(args: Parameters<F>): TransformedArgsHereDefaultsToParametersF; isEqual(a: TransformedArgsHereDefaultsToParametersF, b: TransformedArgsHereDefaultsToParametersF): boolean; }
编辑补充:已完成解决方案的TypeScript Playground示例,感谢帮助!
内容的提问来源于stack exchange,提问作者David S
相关产品推荐
相关产品推荐

