有一组接口:
export interface FormData<T extends ControlData = any> {
[type: string]: T;
}
export type FormResult<T extends FormData> = {
[type in keyof T]: T[type];
};
export interface ControlData<T = any> {
value: T;
}
export interface ButtonSelectControlData<T> extends ControlData<T> {
query: string;
}
export interface RoutesAddCityData extends FormData {
cityId: ButtonSelectControlData<number>;
routeId: ControlData<number>;
}当我使用FormResult时:
(data: FormResult<RoutesAddCityData>) => {
// ...
}正如我在IDE中看到的那样,data.cityId有ButtonSelectControlData<number>类型,data.routeId有ControlData<number>类型。但我想看看两种情况下的型号。有可能吗?
发布于 2019-01-19 14:30:02
如果我正确理解,您希望FormResult类型从ButtonSelectControlData和ControlData中提取底层类型参数。如果是这样的话,那么一个可能的解决方案就是创建一个条件类型
type FormResult<T> = {
[K in keyof T]: T[K] extends ControlData<infer U>
? U
: never
}https://stackoverflow.com/questions/54266121
复制相似问题