创建在数组上“映射”的通用类型

时间:2019-11-15 20:56:37

标签: typescript

给出一个函数数组

const arrayOfFunctions = [
    () => 1,
    () => 2,
    () => 3,
]

我可以这样获得第一个返回类型:

type FirstReturnType = ReturnType<typeof x[0]>

我试图在typeof x上“映射”并返回所有类似的类型:

这种类型怎么了?

type ReturnTypeArray<M extends Array<Function>> = {
    [K in M]: ReturnType<M[K]>
}

然后我可以消除重复并创建一种类型。

export type UnionToIntersection<U> =
    (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never

1 个答案:

答案 0 :(得分:1)

我错过了keyof

type ReturnTypeArray<M extends Array<Function>> = {
    [K in keyof M]: M[K] extends ((...args: any[]) => any) ? ReturnType<M[K]> : never 
}