MST

星途 面试题库

面试题:TypeScript类型守卫在复杂类型结构中的深度应用

假设有如下复杂类型定义:`type DeepObject = { [key: string]: DeepObject | string | number | boolean; };`编写一个函数`validateDeepObject`,使用类型守卫来确保传入的对象符合`DeepObject`的结构,即对象的所有值要么是字符串、数字、布尔值,要么是符合`DeepObject`结构的对象。如果对象结构正确返回`true`,否则返回`false`。
19.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function validateDeepObject(obj: any): boolean {
    if (typeof obj!== 'object' || obj === null) {
        return false;
    }
    for (const key in obj) {
        if (Object.hasOwnProperty.call(obj, key)) {
            const value = obj[key];
            if (typeof value ==='string' || typeof value === 'number' || typeof value === 'boolean') {
                continue;
            } else if (typeof value === 'object' && value!== null) {
                if (!validateDeepObject(value)) {
                    return false;
                }
            } else {
                return false;
            }
        }
    }
    return true;
}