【问题标题】:Extracting types from object properties when they are functions当对象属性是函数时从对象属性中提取类型
【发布时间】:2021-08-25 14:56:58
【问题描述】:

您好,我正在尝试像这样提取对象的属性:

const combinedReducers = {
    markers: markersReducer, // () => MarkType
    mapCenter: setMapCenter // () => CenterType
}

问题是我不想为每个属性单独执行此操作。第二个问题是属性是返回某些东西的函数,我想要它的类型。 应该是这样的

interface Props {
    markers: MarkType,
    center: CenterType
}

这甚至可能吗?谢谢。

【问题讨论】:

    标签: typescript types interface


    【解决方案1】:

    当然,你可以做到:

    const markersReducer = () => 'hello'
    const setMapCenter = () => 42
    
    const combinedReducers = {
      markers: markersReducer, // () => MarkType
      mapCenter: setMapCenter // () => CenterType
    }
    
    type Fn = (...args: any) => any
    
    type Props<Obj extends Record<string, Fn>> = {
      [Prop in keyof Obj]: ReturnType<Obj[Prop]>
    }
    
    type Result = Props<typeof combinedReducers>
    

    Playground

    ReturnType docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      相关资源
      最近更新 更多