Skip to content

Mapped types on tuples and arrays not working recursively #29442

@Voronar

Description

@Voronar

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[];

Playground Link:

Related Issues:

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFixedA PR has been merged for this issue

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions