typescript,相同的类型

typescript,相同的类型,typescript,swagger,swagger-codegen,Typescript,Swagger,Swagger Codegen,在对一个大json文件的typescript codegen大摇大摆之后,我需要清理具有相同内容的typescript类型和所有生成的类型声明,这些类型声明将一个新类型与另一个类型相等。 例如: 代码运行良好,我只想减少文件大小,因为我有数百次重复。 我使用的是Visual Studio代码,我试图搜索扩展名,但什么也找不到。根本问题在于您的Swagger文件。Swagger可以在DTO中声明共性,然后可以使用这些共性生成更干净的客户端库。您是Swagger文件的作者吗?或者您可以在运行Type

在对一个大json文件的typescript codegen大摇大摆之后,我需要清理具有相同内容的typescript类型和所有生成的类型声明,这些类型声明将一个新类型与另一个类型相等。 例如:

代码运行良好,我只想减少文件大小,因为我有数百次重复。
我使用的是Visual Studio代码,我试图搜索扩展名,但什么也找不到。

根本问题在于您的Swagger文件。Swagger可以在DTO中声明共性,然后可以使用这些共性生成更干净的客户端库。您是Swagger文件的作者吗?或者您可以在运行TypeScript生成程序之前手动改进Swagger文件吗?我不是作者,我可以在codegen步骤之前修改json文件,但是我已经做了很多工作来修复问题,现在它可以工作了。。。不想重新开始:/我在想应该有一个工具,我觉得奇怪的是,我是唯一一个遇到这个问题的人。在大型项目中,可以使用一个工具来“清理”具有不同名称的相同类型。这样的工具不会像您认为的那样有用,因为具有相同形状的不同类型仍然可以具有不同的语义-而类型都与语义有关。我同意,当然,该工具应该检查代码,以避免覆盖从代码的其他部分扩展的类型和接口。但是,这不是一个大问题,因为在构建之后,无论使用何种类型,文件大小都保持不变。它看起来很难看,编辑起来很不舒服。。。
export type V2AuthenticationResource = {
  grantType?: string;
  password?: string;
  refreshToken?: string;
  token?: string;
  username?: string;
};

export type PostRestapiV20AuthBodyParameters = V2AuthenticationResource;
export type DeleteRestapiV20AuthBodyParameters = V2AuthenticationResource;

PostRestapiV20Auth(
  body: PostRestapiV20AuthBodyParameters //here i can use V2AuthenticationResource instead
): ApiResponse<V2AuthenticationResponse> {
  const path = "/restapi/v2.0/auth";
  return this.requestFactory(
    path,
    undefined,
    body,
    undefined,
    "POST"
  );
}

DeleteRestapiV20Auth(
  body: DeleteRestapiV20AuthBodyParameters //here i can use V2AuthenticationResource instead
): ApiResponse<V2AuthenticationResponse> {
  const path = "/restapi/v2.0/auth";
  return this.requestFactory(
    path,
    undefined,
    body,
    undefined,
    "DELETE"
  );
}
export type V2DeviceData = {
  deviceId: string;
  deviceName: string;
}
export type V2DeviceInfo = {
  deviceId: string;
  deviceName: string;
}