Domain: check: Type InferenceHelp WantedPossible Improvement
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