type A = [number, string];
type B = A[number];
type Foo<T> = {
[K in keyof T]: T[K][]
};
type X = Foo<A>; // [number[], string[]]
type Y = Foo<number[]>; // number[][]
Right now Escalier produces the following types:
type X = Foo<A>: // {0: string[], 1: number[]}
type Y = Foo<number[]>; // {[K]: string[] for K in number}
We want the following behaviour:
Right now Escalier produces the following types: