You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The result of this is an "expanded" object type. The problem, likely, is that when the result of that gets passed to a spread operator... it won't allow it because this is not an array/tuple type. So it returns an error type upon this instantiation.
However, just spreading arrays/tuples within intersections often "just works" (TS playground):
typeTest1<Textendsunknown[]>=[...T]typeInput1=string[]&{a: number}typeResult1=Test1<Input1>// ^? type Result1 = string[]typeInput2=(string|number)[]&['foo',string,42]typeResult2=Test1<Input2>// ^? type Result2 = (string | 42)[]typeInput3=[string|boolean,string|symbol, ...number[]]&['foo',string,43]typeResult3=Test1<Input3>// ^? type Result3 = (string | 43)[]typeInput4=[string|boolean,boolean, ...number[]]&['foo',string,44]typeResult4=Test1<Input4>// ^? type Result4 = any[]
It's worth noticing that Result4 displays as any[] - it's likely that this one is also an error type but I haven't verified it internally.
I'd argue that both should behave the same since the spread mapped type in the example is basically just an Identity type. We can imagine mapped types with other template types but I think it doesn't matter all that much. The output tuple/array structure can be resolved in situation like this and then the element types can be mapped with the template type.
So I think that isArrayOrTupleOrIntersection added in #57801 should be changed to use some over every and then the non-array/tuple members should be simply ignored. Alternatively, a logic like this could be applied within a "spread context" but making the instantiation logic contextual doesn't make much sense to me here.
π Search Terms
array intersection spread any
π Version & Regression Information
β― Playground Link
https://tsplay.dev/wOdoMN
π» Code
π Actual behavior
Inferred as
any[]
due to an internal error typeπ Expected behavior
Inferred as
string[]
Additional information about the issue
@Andarist mentioned this could be related to #59260
The text was updated successfully, but these errors were encountered: