打字稿“类型中缺少属性”,但类型为“从不”

时间:2019-08-13 02:11:53

标签: typescript

我要实现的是引用原始接口,并删除一些属性。这是我的原始界面:

export interface IInvitations {
    parent: Parse.User;
    visitor: Visitors;
    dates: IInvitationDateAndPin[];
}

用户发起邀请时,不应将parent作为参数。保存到数据库之前,它将自动分配。所以我做了一个新的界面来忽略它:

export interface ICInvitations extends IInvitations {
    parent: never;
}

但是后来我无法成功为该接口分配值。

let data: ICInvitations = {
    visitor: Visitors,
    datas: [...]
}

它显示Property 'parent' is missing in type。但是类型永远不会,我没有给它分配任何东西。

1 个答案:

答案 0 :(得分:1)

如Jeff所述,虽然您不能从接口中删除该属性,但是可以通过执行以下操作来重用它的大部分内容(Omit随TypeScript 3.5一起提供):

export interface ICInvitations extends Omit<IInvitations, 'parent'> {
  parent?: never;
}

parent?: never部分是可选的,但是如果有人试图构造一个为parent设置值的实现此接口的东西,则会使您收到错误消息。