Typescript重新映射数组类型
是否可以重新映射数组(或者元组)的类型 假设我有一个函数数组,我想让它成为一个函数数组。差不多Typescript重新映射数组类型,typescript,typescript-typings,Typescript,Typescript Typings,是否可以重新映射数组(或者元组)的类型 假设我有一个函数数组,我想让它成为一个函数数组。差不多 type Remap<F extends ((... args: any) => any)[]> = F extends [infer T1] ? [Parameters<T1>] : F extends [infer T1, infer T2] ? [Parameters<T1>, Parameters<T2>] : F
type Remap<F extends ((... args: any) => any)[]> =
F extends [infer T1] ? [Parameters<T1>] :
F extends [infer T1, infer T2] ? [Parameters<T1>, Parameters<T2>] :
F extends [infer T1, infer T2, infer T3] ? [Parameters<T1>, Parameters<T2>, Parameters<T3>] :
never;
const a = [(a: string) => void, (b: number) => void]
type T = Remap<typeof a> // [[string], [number]] - simply captured arguments of functions.
type Remap any)[]>=
F扩展[推断T1]?[参数]:
F扩展[推断T1,推断T2]?[参数,参数]:
F扩展[推断T1,推断T2,推断T3]?[参数,参数,参数]:
从不
常量a=[(a:string)=>void,(b:number)=>void]
类型T=Remap/[[string],[number]]-只捕获函数的参数。
我需要的是传递函数数组,比如“a”,并创建可能包含所有函数参数的新函数,比如([第一个参数],[第二个参数])。您可以使用映射类型映射元组:
type Remap<F extends ((...args: any) => any)[]> = {
[P in keyof F]: F[P] extends (...a: infer P) => any ? P: never
}
declare const a: [(a: string) => void, (b: number) => void]
type T = Remap<typeof a>
键入Remap any)[]>={
[P in keyof F]:F[P]扩展(…a:推断P)=>任何?P:从不
}
声明常量a:[(a:string)=>void,(b:number)=>void]
类型T=重新映射
@luky wops,最初重新编写了相同的代码..希望您看到更新的映射元组版本(它总是在游乐场链接中..)是的,我在那里看到了,但首先我在寻找更改:)和(…参数:T)是[[string],[number]],如果我想要[string,number]?