当它们是函数时从对象属性中提取类型

Extracting types from object properties when they are functions

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

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

问题是我不想根据 属性 单独进行。第二个问题是属性是 return 某些东西的函数,我想要它的类型。 应该是这样的

interface Props {
    markers: MarkType,
    center: CenterType
}

这可能吗?谢谢。

当然,你可以做到:

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