typescript 用一个不同的值扩展接口而不必重写该对象的选项?

gab6jxml  于 2022-12-24  发布在  TypeScript
关注(0)|答案(2)|浏览(90)

创建一个只有一个值不同的类似接口,然后复制代码并再次重写对象的最佳方法是什么?没有联合类型也能做到吗?

// A1
export interface FirstType {
  id: string;
  parentId: string;
  type: 'a1';
  data : string[]
  dataA : string[]
  dataB : string[]
  dataC : string[]
  dataD : string[]
  dataE : string[]
}

// A2
export interface SecondType extends FirstType {
   type: 'a2';
}
n1bvdmb6

n1bvdmb61#

您可以使用Omit<T, K>实用程序类型来生成适合于接口扩展的命名类型:

export interface SecondType extends Omit<FirstType, "type"> {
    type: 'a2';
}

Playground代码链接

pn9klfpd

pn9klfpd2#

您可能喜欢这种方法:

export interface SecondType {
  type: 'a2';
}

type SecondTypeUnion = FirstType | SecondType;

相关问题