MST

星途 面试题库

面试题:TypeScript映射类型与条件类型在函数重载中的深度应用

定义一个函数`processData`,它接受一个参数,这个参数的类型可以是一个对象,对象的属性名是字符串,属性值可以是`string`、`number`、`boolean`。使用映射类型和条件类型来实现函数的重载,使得当传入的对象属性值为`string`时,函数返回值为该字符串的长度;当属性值为`number`时,函数返回值为该数字的平方;当属性值为`boolean`时,函数返回值为其取反的值。要求尽可能精确地定义函数的类型。
44.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function processData<T extends { [key: string]: string | number | boolean }>(obj: T): {
    [K in keyof T]: T[K] extends string? number : T[K] extends number? number : T[K] extends boolean? boolean : never
} {
    const result: any = {};
    for (const key in obj) {
        if (typeof obj[key] ==='string') {
            result[key] = obj[key].length;
        } else if (typeof obj[key] === 'number') {
            result[key] = obj[key] * obj[key];
        } else if (typeof obj[key] === 'boolean') {
            result[key] =!obj[key];
        }
    }
    return result;
}