如何在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`,但没