Avatar ·

如何在TypeScript中从类型中排除属性 (Exclude property from type)

大家好!我是TypeScript新手,在处理对象类型时遇到了一个问题。我有一个`User`接口,包含很多字段:`id`、`name`、`email`、`password`、`createdAt`、`role`等。当我从API返回用户数据时,我不想把`password`和`createdAt`(这些是内部字段)暴露给客户端。 问题在于,我不想为用户的公共表示创建一个单独的接口,因为这会导致代码重复。如果我在`User`中添加一个新字段,我必须记得也要把它添加到公共接口中。 这是一个例子: ```typescript interface User { id: number; name: string; email: string; password: string; createdAt: Date; role: 'admin' | 'user'; } // 如何得到一个没有password和createdAt的类型? // 想要类似这样的东西: // type PublicUser = ExcludeProperty; ``` 我试过使用`Omit`,但没