Callback argument type not inferred for union of interfaces #59309
Labels
Help Wanted
You can do this
Possible Improvement
The current behavior isn't wrong, but it's possible to see that it might be better in some cases
Milestone
π Search Terms
"implicitly has an" inference
π Version & Regression Information
β― Playground Link
https://www.typescriptlang.org/play/?target=5&ts=5.5.3#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgQQGcBPJbAJWEIFcAbGAYU1toCMcBrAHgBUAaOAFE4AXiFQo0AHxwA3gFgAUHBVwAFGigB+AFxC4AHzhI6tAVCp0YuuDwCUegG4QEAEwDcSgL5KloSLCIKGhYuAQkZJQ09ACSqFCYMNC8AuQCwmKCEtJySqrqCKgAtnr8cNjMbJx6RKQUlvRMLOzY3GlCUg5wzm6eij6K-tDwyPGheLWRDTBxaInQAAqSRQiEwClw5DIKyqpqhcAltl1LECtrXFt9A0quwNi0mBZw6NRkMAgQSHBFmGAAMggVjANu0MuJJFApGo8qonlBSgBtAC6fFhKloQMKehMRVYaDRuxUBwSSQRKkm9WiM3i8ygp3O6zKW0M4TqUSss1JyWZ6SkhJOy1W63IKKkfSUvwBWJgakRAEY+AAmPgAZlRcFVAkwEWw6iQdlE23RcAsMGoUG+3wAVNa4ErrnZ3EA
π» Code
π Actual behavior
The type of
n
in themapLimit
callback is inferred asany
:π Expected behavior
I would expect the type of
n
to be inferred asnumber
.Additional information about the issue
This example is based on the types for the
async
package:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/b9820410f85f259cbad6065d8cb6f23f403109ac/types/async/index.d.ts#L321-L325
Note that if the type for
iterator
inmapLimit
is changed to either justAsyncResultIteratorPromise<T, R>
or justAsyncResultIterator<T, R, E>
(that is, no longer a union type), things work as expected andn
has typenumber
.I found a very old discussion of what looks to be the same issue in the
DefinitelyTyped
repo: DefinitelyTyped/DefinitelyTyped#24297. The issue described there is exactly the one I'm facing. One commenter claimed that things worked correctly, and another commenter claimed that changing the way thatasync
was imported had some effect? Neither of those sounds plausible to me.I found some issues that may describe the same or a similar problem:
However, my knowledge of TypeScript internals/terminology isn't strong enough to say for sure that this isn't a novel issue I'm facing. If this is in fact a duplicate, please close it as such and I'll add this example to the relevant issue. Thank you!
The text was updated successfully, but these errors were encountered: