Open
Description
π Search Terms
contextually typed autocomplete, contextually typed type display, contextual return type
π Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ
β― Playground Link
π» Code
declare function makeRequest<
QueryParam
>(
getFn: (client: { prop: number }) => QueryParam,
params: NoInfer<QueryParam>,
): void;
// Hovering over `makeRequest` shows that `QueryParam` is inferred as `unknown` and `params` is obstensibly typed as `unknown` which is incongruous with this call is an error.
makeRequest(
(client) => client,
{}, // Using autocomplete in the object suggests no property keys.
// ^ Argument of type '{}' is not assignable to parameter of type '{ prop: number; }'.
);
makeRequest(
(client: { prop: number }) => client,
{}, // Using autocomplete here now suggests keys.
);
π Actual behavior
The first call to makeRequest
where client
is contextually typed has broken autocomplete. No relevant properties are suggested. Furthermore hovering over makeRequest
shows, incongruously, that params: unknown
and yet the call {}
causes an error expecting it to be of type { prop: number; }
π Expected behavior
I expected auto-complete to work in all cases and the type display to be consistent.
Additional information about the issue
Related to #46916 but @Andarist hypothesized that the underlying root cause is different in this case so I decided to open it as its own issue for tracking purposes.