MST

星途 面试题库

面试题:TypeScript索引类型与索引签名在复杂类型中的应用

有一个类型`Company`,它是一个对象,其属性是部门名称(字符串类型),每个部门又是一个对象,包含员工姓名(字符串类型)和年龄(数字类型)组成的数组。例如:`{ 'engineering': [ { 'name': 'Alice', 'age': 30 }, { 'name': 'Bob', 'age': 25 } ],'sales': [ { 'name': 'Charlie', 'age': 28 } ] }`。请编写一个函数`getEmployeeAge`,它接收一个`Company`类型的对象、部门名称和员工姓名,使用索引类型与索引签名结合的方式,返回该员工的年龄,如果找不到则返回`undefined`。
34.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

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

type Company = {
    [department: string]: Employee[];
};

function getEmployeeAge(company: Company, department: string, employeeName: string): number | undefined {
    const departmentEmployees = company[department];
    if (departmentEmployees) {
        const employee = departmentEmployees.find(emp => emp.name === employeeName);
        if (employee) {
            return employee.age;
        }
    }
    return undefined;
}