-
Notifications
You must be signed in to change notification settings - Fork 13k
Open
Description
π Search Terms
const context expression assertion inference type parameter
π Version & Regression Information
- This is the behavior in every version I tried
β― Playground Link
π» Code
declare function test<T, D>(arg: {
input: D;
produce: (arg: D) => T;
consume: (arg: T) => number;
}): D;
const broken = test({
input: 100,
produce: (arg) => arg.toString(), // 'arg' is of type 'unknown'.(18046)
consume: (arg) => arg.length,
} as const);
const working = test({
input: 100,
produce: (arg) => arg.toString(), // `arg` inferred as `number`
consume: (arg) => arg.length,
});
π Actual behavior
as const
is the only difference between those two and its presence breaks assigned parameter type in produce
π Expected behavior
I think as const
should not impact inference this way and both should be inferred just OK. It's just that the broken
case should infer 100
instead of number
for the D
type parameter
Additional information about the issue
No response
lishaduck
Metadata
Metadata
Assignees
Labels
No labels