Skip to content

Incorrect intersection narrowing of nongeneric type in conditional typeΒ #43427

Closed
@RyanCavanaugh

Description

@RyanCavanaugh

Bug Report

πŸ”Ž Search Terms

conditional type narrow nongeneric

πŸ•— Version & Regression Information

  • This changed between versions 3.8 and 3.9

⏯ Playground Link

Playground link with relevant code

πŸ’» Code

type Q<T> = number extends T ? (n: number) => void : never;
function fn<T>(arg: Q<T>) {
  // Expected: OK
  // Actual: Cannot convert 10 to number & T
  arg(10);
}
// Legal invocations are not problematic
fn<string | number>(m => m.toFixed());
fn<number>(m => m.toFixed());

πŸ™ Actual behavior

Error issued at arg(10), even though by inspection this is always a legal call.

πŸ™‚ Expected behavior

Honestly, not sure.

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScript

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions