Closed
Description
TypeScript Version: 3.2.2 (ts playground)
Search Terms: recursive, mapped types, tuple, array
Code
type DeepMap<T extends unknown[], R> = {
[K in keyof T]: T[K] extends unknown[] ? DeepMap<T[K], R> : R;
};
type tup = [string, [string, [string]]];
type arr = string[][];
type t1 = DeepMap<tup, number>;
type t2 = DeepMap<arr, number>;
Expected behavior:
type t1 = [number, [number, [number]]];
type t2 = number[][];
Actual behavior:
type t1 = [number, any];
type t2 = any[];
Related Issues: