Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript重新映射数组类型_Typescript_Typescript Typings - Fatal编程技术网

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]?