MST

星途 面试题库

面试题:TypeScript中Partial工具类型在类型映射和条件类型结合的高级应用

定义一个接口 interface Data { id: number; value: string; status: 'active' | 'inactive'; }。要求基于Partial工具类型,结合类型映射和条件类型创建一个新类型。当status为'active'时,id和value属性必须存在;当status为'inactive'时,所有属性都变为可选。然后编写一个函数,接收这个新类型作为参数,并根据status的值进行不同的逻辑处理,例如:如果是'active',打印出id和value;如果是'inactive',只打印一条提示信息表明该数据处于非活动状态。
36.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface Data {
    id: number;
    value: string;
    status: 'active' | 'inactive';
}

type NewData = {
    [K in keyof Data]: K extends'status'? Data[K] : Data[K] extends 'active'? NonNullable<Data[K]> : Partial<Data[K]>;
};

function processData(data: NewData) {
    if (data.status === 'active') {
        console.log(`ID: ${data.id}, Value: ${data.value}`);
    } else {
        console.log('该数据处于非活动状态');
    }
}