MST

星途 面试题库

面试题:TypeScript 剩余参数在复杂场景下的应用

假设你正在开发一个表单验证库,设计一个 TypeScript 函数,它接受一个验证规则函数数组,每个验证规则函数接受表单数据(类型自定义)并返回布尔值表示验证是否通过。使用剩余参数接受多个验证规则函数,并返回一个新的函数,新函数接受表单数据,依次调用所有验证规则函数,只要有一个验证不通过就返回 false,全部通过返回 true。同时,要考虑如何处理验证规则函数可能返回 Promise 的情况,保证异步验证也能正确工作。
22.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type FormData = { [key: string]: any };

function createValidator(...validators: ((data: FormData) => boolean | Promise<boolean>)[]) {
    return async function validateForm(data: FormData): Promise<boolean> {
        for (const validator of validators) {
            const result = await Promise.resolve(validator(data));
            if (!result) {
                return false;
            }
        }
        return true;
    };
}