首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用仿制药?

如何正确使用仿制药?
EN

Stack Overflow用户
提问于 2019-01-19 10:26:04
回答 1查看 37关注 0票数 0

有一组接口:

代码语言:javascript
复制
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时:

代码语言:javascript
复制
(data: FormResult<RoutesAddCityData>) => {
  // ...
}

正如我在IDE中看到的那样,data.cityIdButtonSelectControlData<number>类型,data.routeIdControlData<number>类型。但我想看看两种情况下的型号。有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-19 14:30:02

如果我正确理解,您希望FormResult类型从ButtonSelectControlDataControlData中提取底层类型参数。如果是这样的话,那么一个可能的解决方案就是创建一个条件类型

代码语言:javascript
复制
type FormResult<T> = {
  [K in keyof T]: T[K] extends ControlData<infer U>
    ? U
    : never         
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54266121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档