MST

星途 面试题库

面试题:TypeScript中函数重载与接口结合实现数据获取功能

假设你需要实现一个通过不同参数获取用户数据的功能。定义一个接口`User`,包含`name`(字符串类型)和`age`(数字类型)属性。然后,编写一个函数`fetchUser`,实现以下函数重载:1. 接受一个数字类型的`id`参数,返回对应`id`的用户数据;2. 接受一个字符串类型的`name`参数,返回名字匹配的用户数据数组。请给出完整的TypeScript代码实现。
12.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface User {
    name: string;
    age: number;
}

// 函数重载声明
function fetchUser(id: number): User | undefined;
function fetchUser(name: string): User[];

// 函数实现
function fetchUser(param: number | string): User | User[] | undefined {
    // 模拟用户数据
    const users: User[] = [
        { name: 'Alice', age: 25 },
        { name: 'Bob', age: 30 },
        { name: 'Charlie', age: 35 }
    ];

    if (typeof param === 'number') {
        // 根据id查找用户
        return users.find(user => user.name.charCodeAt(0) - 65 === param);
    } else {
        // 根据名字查找用户
        return users.filter(user => user.name === param);
    }
}