π Search Terms
mapped type assignability regression
π Version & Regression Information
- This changed between versions 5.3 and 5.4
β― Playground Link
Playground Link
π» Code
type ValueType = string;
type Box<T extends ValueType> = { v: T };
type Test<T extends ValueType[]> = T
type UnboxArray<T> = {
[K in keyof T]: T[K] extends Box<infer R> ? R : never;
};
type Identity<T> = { [K in keyof T]: T[K] };
declare function fnBad<T extends Array<Box<ValueType>>>(...args: T): Test<Identity<UnboxArray<T>>>;
declare function fnOk<T extends Array<Box<ValueType>>>(...args: T): Test<UnboxArray<T>>;
type Unbox<T> = T extends Array<Box<infer R>> ? Array<R> : never;
declare function fnSimilar<T extends Array<Box<ValueType>>>(...args: T): Test<Identity<Unbox<T>>>;
π Actual behavior
Test<Identity<UnboxArray<T>>> is being reported as an error because Identity<UnboxArray<T>> is not assignable to the constraint of Test. Even more strange the error elaboration says Type 'Box<string>' is not assignable to type 'string' which is strange since the type that comes out of UnboxArray<T> can't have Box<string> as an item type. If we don't pass the type though the Identity mapped type, then UnboxArray<T> is assignable to ValueType[].
π Expected behavior
Test<Identity<UnboxArray<T>>> should not be an error as it is in 5.3
Additional information about the issue
No response
π Search Terms
mapped type assignability regression
π Version & Regression Information
β― Playground Link
Playground Link
π» Code
π Actual behavior
Test<Identity<UnboxArray<T>>>is being reported as an error becauseIdentity<UnboxArray<T>>is not assignable to the constraint ofTest. Even more strange the error elaboration saysType 'Box<string>' is not assignable to type 'string'which is strange since the type that comes out ofUnboxArray<T>can't haveBox<string>as an item type. If we don't pass the type though theIdentitymapped type, thenUnboxArray<T>is assignable toValueType[].π Expected behavior
Test<Identity<UnboxArray<T>>>should not be an error as it is in 5.3Additional information about the issue
No response