Skip to content

Infer declarations are allowed in generic constraints, but do not infer generic constraint types #41040

Open
@lazytype

Description

@lazytype

TypeScript Version: 4.0.2

Search Terms: generic constraint, extends infer

Code

type InferGenericConstraint<Fn> = 
    Fn extends <T extends infer Constraint>(arg: T) => any
        ? Constraint
        : never;

type GenericFunctionExample = <T extends number>(arg: T) => void;

type InferredConstraint = InferGenericConstraint<GenericFunctionExample>;

Expected behavior:

  • Preferred: InferredConstraint is number.
  • Alternative: infer declaration is disallowed within a generic constraint clause.

Actual behavior: InferredConstraint is never

Playground Link: https://tsplay.dev/gWoYlN

Related Issues: #1213

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions