【问题标题】:Omit fields while extending interface typescript扩展接口打字稿时省略字段
【发布时间】:2021-01-08 12:33:20
【问题描述】:

我正在尝试扩展 ISampleB 接口并从中省略一些值,如下所示。我不知道我是否做错了什么

export interface ISampleA extends Omit<ISampleB, 'fieldA' | 'fieldB' | 'fieldC' | 'fieldD' | 'fieldE'> {
    fieldB?: string
    fieldA?: string
    fieldC?: string
    fieldD: number
    fieldE?: number
}

我的招摇生成器抛出如下错误

There was a problem resolving type of 'ISampleA'.

ode_modules/typescript-rest-swagger/dist/metadata/methodGenerator.js:83
                throw new Error("Error generate parameter method: '" + controllerId.text + "." + methodId.text + "' argument: " + parameterId.text + " " + e);
Error: Error generate parameter method: 'abc' argument: fields Error: No type found for Omit

【问题讨论】:

  • 我实际上不确定抛出的错误是否来自于此,但我认为从接口中省略属性并在其扩展接口中重新定义它们是行不通的。
  • 为什么不将实际的共性提取到它们都扩展的第三个接口?
  • @jonrsharpe - 我无法更改主界面,因为它在很多地方使用,并且必须修改大量测试用例。
  • 为什么在哪里使用它很重要? ISampleB 仍然是相同的结果,它只是让 ISampleA 更容易定义。
  • @jonrsharpe - 当然让我试试。我的做法有问题吗?

标签: node.js typescript swagger


【解决方案1】:

尝试使用Exclude&lt;ISampleB, 'fieldA' | 'fieldB' | 'fieldC' | 'fieldD' | 'fieldE'&gt;

欲了解更多信息,您可以访问https://www.typescriptlang.org/docs/handbook/utility-types.html#excludetype-excludedunion

【讨论】:

  • 参数:字段错误:找不到排除的类型
猜你喜欢
  • 2019-05-04
  • 2019-01-06
  • 2019-01-20
  • 1970-01-01
  • 2022-01-20
  • 2022-11-22
  • 1970-01-01
  • 2020-12-25
相关资源
最近更新 更多