现在可以用Typescript 3.0'实现类型化zip函数吗;s通用rest参数?

现在可以用Typescript 3.0'实现类型化zip函数吗;s通用rest参数?,typescript,Typescript,您已经可以定义接受固定数量参数的类型化zip函数,如下所示: function zip2<A, B>(a: A[], b: B[]): Array<[A, B]> 据我所知,Typescript 3.0中添加的新通用rest参数仍然不足以在中键入以前的函数typescript@next(将作为TypeScript 3.1发布)带有映射元组: type Zip<T extends unknown[][]> = { [I in keyof T]: T[I] ex

您已经可以定义接受固定数量参数的类型化zip函数,如下所示:

function zip2<A, B>(a: A[], b: B[]): Array<[A, B]>

据我所知,Typescript 3.0中添加的新通用rest参数仍然不足以在
中键入以前的函数typescript@next
(将作为TypeScript 3.1发布)带有映射元组:

type Zip<T extends unknown[][]> = { [I in keyof T]: T[I] extends (infer U)[] ? U : never }[];
function zip<T extends unknown[][]>(...args: T): Zip<T> {
    return <Zip<T>><unknown>(args[0].map((_, c) => args.map(row => row[c])));
}

declare const y: number[], z: string[]; 
let yz = zip(y, z);  // [number, string][]
typezip={[I-in-keyof T]:T[I]扩展(推断U)[]?U:never}[];
函数zip(…参数:T):zip{
return(args[0].map((uu,c)=>args.map(row=>row[c]));
}
声明常量y:number[],z:string[];
设yz=zip(y,z);//[数字,字符串][]

好极了+1太棒了!如果任何人需要详细的参考资料:
type Zip<T extends unknown[][]> = { [I in keyof T]: T[I] extends (infer U)[] ? U : never }[];
function zip<T extends unknown[][]>(...args: T): Zip<T> {
    return <Zip<T>><unknown>(args[0].map((_, c) => args.map(row => row[c])));
}

declare const y: number[], z: string[]; 
let yz = zip(y, z);  // [number, string][]