在使用自动生成的类/接口文件(通过Swagger Codegen之类的东西)时,通常有必要修改这些模型。例如,假设您有一个自动生成的HighSchool
类。
export interface HighSchool {
schoolTypeCode: number;
name: string;
state: string;
city: string;
}
假设我们创建了一个枚举,以使使用已知的schoolTypeCode
值变得容易。
export const enum HighSchoolTypeCode {
USHighSchool,
GED,
OnlineSchool
}
除了修改自动生成的HighSchool
接口以使用此枚举(重新执行自动生成后将被覆盖)外,我可以在单独的文件中创建自己的HighSchool
接口,然后重新键入{{1} },使用辅助类型as described in this GitHub issue response“弱化”它。
schoolTypeCode
这是export interface HighSchool extends Weaken<HighSchool, 'schoolTypeCode'> {
schoolTypeCode?: HighSchoolTypeCode;
}
助手类型:
Weaken
这里的限制是一次只能削弱一个属性。可以重新构造此帮助程序类型以采用属性名称数组吗?尽管此语法可能不正确,但我正在想象它正在被这样使用:
type Weaken<T, K extends keyof T> = {
[P in keyof T]?: P extends K ? any : T[P];
};
答案 0 :(得分:4)
如果Weaken
传递给您想要削弱的属性名称的并集,则interface WeakenedType extends Weaken<OriginalType, 'foo' | 'bar'> {
foo?: FooEnum;
bar?: BarEnum;
}
会做您想要的事情,
public List<City> getCityList()