๐ Search Terms
toString mapped type
๐ Version & Regression Information
- This changed between versions 4.6 and 4.7
โฏ Playground Link
https://www.typescriptlang.org/play?ts=5.4.0-dev.20240110#code/C4TwDgpgBAsghmMIA8AVKEAewIDsAmAzlAK64DWuA9gO64DaAugHxQC8UA3lPQNJQBLXFHIQQVAGZR0cYr0YAuaX0ZQAvgG4AsAChQkKADkqwAIIAnc3BDtYCJMlwkAtgCMI5ps207d+CADGADZw5tASZAHAAlTC+FQWViAAysAkEhIAFJhKZJS0DIwAlEoAblQC+D7+waHQAbGEwFA5RiaJ1tUJltap6VmYRRpAA
๐ป Code
type Mappy<T extends unknown[]> = { [K in keyof T as K]: T[K] };
type NotArray = Mappy<number[]>;
declare function doArrayStuff(x: unknown[]): void;
declare const x: NotArray;
doArrayStuff(x); // Error
๐ Actual behavior
Error on doArrayStuff(x):
Argument of type 'Mappy<number[]>' is not assignable to parameter of type 'unknown[]'.
Types of property 'toString' are incompatible.
Type 'number' is not assignable to type '() => string'
๐ Expected behavior
No error, type of x's toString is () => string.
Additional information about the issue
No response