MST

星途 面试题库

面试题:TypeScript中keyof与索引类型查询的复杂类型处理

已知一个复杂类型如下:type NestedObject = { user: { name: string; age: number; hobbies: string[] }; settings: { theme: string; fontSize: number; }; }; 编写一个函数,该函数接收一个NestedObject类型的对象和一个深度嵌套的键路径(例如['user', 'name']),使用keyof和索引类型查询,返回对应路径的值。函数定义为:function getNestedValue(obj: NestedObject, path: string[]): any; 请实现这个函数。
25.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type NestedObject = {
    user: { name: string; age: number; hobbies: string[] };
    settings: { theme: string; fontSize: number; };
};

function getNestedValue(obj: NestedObject, path: string[]): any {
    let current = obj;
    for (const key of path) {
        if (!current || typeof current!== 'object' ||!(key in current)) {
            return undefined;
        }
        current = current[key as keyof typeof current];
    }
    return current;
}