MST

星途 面试题库

面试题:TypeScript泛型函数与类型推断的深度应用

假设有一个复杂的业务场景,需要实现一个泛型函数compose,它可以接受多个函数作为参数,并返回一个新的函数。新函数执行时会按照传入函数的顺序依次调用,并且前一个函数的返回值会作为下一个函数的参数。要求正确处理各种函数的参数和返回值类型,利用类型推断让整个流程尽可能地自动推导类型。请用TypeScript完成该函数的编写。
23.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function compose<F extends ((...args: any) => any)[]>(...funcs: F): ((...args: Parameters<F[0]>) => ReturnType<F[F extends ((...args: any) => infer R) ? F['length'] - 1 : never]>) {
    return funcs.reduce((acc, func) => {
        return function(this: any, ...args: any) {
            return func(acc.apply(this, args));
        };
    });
}