首页 > 解决方案 > 如何从接口中省略一个属性,而不是 TypeScript 中的类型?

问题描述

我需要创建一个从 2 扩展的接口,但我收到错误: 接口“IModalProps”不能同时扩展类型“ModalProps”和“ModalRNProps”。“ModalProps”和“ModalRNProps”类型的命名属性“onShow”不相同。

export interface IModalProps extends ModalProps, ModalRNProps {
  showCloseButton?: boolean;
  showDoneBar?: boolean;
}

我只能省略这样的类型:

type OmitA = Omit<ModalProps, "onShow">; 

但是我不能在使用类型进行扩展之后,因为只有接口才有可能。你能告诉我,我怎样才能从接口中省略一个属性,然后从几个接口创建一个可扩展接口?

标签: typescriptreact-nativetypes

解决方案


尝试接口而不是类型

export interface IModalProps {
  showCloseButton?: boolean;
  showDoneBar?: boolean;
}


export interface Test extends Omit<IModalProps, 'showDoneBar'> {

}

const test: Test = {
    showCloseButton: true,
    showDoneBar: false, // fails
 };

操场


推荐阅读