TypeScript:只返回接口的一部分



我有一个这样的用户界面

interface IUser {
name: string,
phoneNumber: string
}

和像这样的公共用户界面

interface IPublicUser {
name: string
}

我正在尝试做的是从类型IUser仅返回公共信息的对象。

我尝试了这样的事情:

const user: IUser = {
name: 'Eliott',
phoneNumber : '+1...'
}
console.log(user as unknown as  IPublicUser)

但始终返回完整用户。

我的临时解决方法是创建一个方法toPublicJson只返回所需的字段,但它不是很好,因为如果我的界面发生变化,我也必须改变这个方法。

你有什么建议吗?

谢谢

你必须记住,TypeScript 编译为 JavaScript。像variable as type这样的陈述在转译中迷失了方向。它们只是对转译者和用户的提示,但它们实际上没有任何意义。同样,接口只是编译器的提示和帮助,因为它们在运行时实际上没有任何意义。

如果要执行此操作,仍然必须手动执行此操作,以创建具有所需属性的另一个对象:

const publicUser : IPublicUser = { name: user.name };

当然,你可能只关心其他程序员在处理你的代码时看到的内容,所以,这样,他们只会看到IPublicUser,如果他们想使用不在那个接口中的属性,他们会得到一个编译器错误。但是,如果您关心代码执行时真正发生的事情,那么您必须明确地执行此操作。

最新更新