MST
星途 面试题库

面试题:TypeScript 高级类型映射类型与运行时数据转换

假设有一个类型`User`定义如下:`type User = {name: string; age: number; email: string;}`,现在你需要创建一个映射类型`PartialUser`,它将`User`类型的所有属性变为可选。然后在运行时,有一个`User`类型的对象,你要将其转换为`PartialUser`类型的对象,同时过滤掉值为`null`或`undefined`的属性。请编写相应的TypeScript代码实现。
13.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type User = {name: string; age: number; email: string;};
type PartialUser = {
    [P in keyof User]?: User[P];
};

function convertToPartialUser(user: User): PartialUser {
    const partialUser: PartialUser = {};
    for (const key in user) {
        if (user.hasOwnProperty(key) && user[key] !== null && user[key]!== undefined) {
            partialUser[key as keyof User] = user[key];
        }
    }
    return partialUser;
}

// 示例使用
const user: User = {name: 'John', age: 30, email: 'john@example.com'};
const partialUser = convertToPartialUser(user);
console.log(partialUser);