Infer Keyword
Learn how infer extracts types inside conditional types to build advanced reusable helpers.
infer lets you extract a type from another type. ## Example: get return type ```ts type MyReturn<T> = T extends (...args: any[]) => infer R ? R : never; type R1 = MyReturn<() => number>; // number type R2 = MyReturn<(x: string) => boolean>; // boolean ``` ## Extract array item type ```ts type Item<T> = T extends (infer U)[] ? U : T; type A = Item<number[]>; // number type B = Item<string>; // string ``` ## Graph ```mermaid flowchart LR A[Complex Type] --> B[infer] B --> C[Extracted Type] ``` ## Remember - infer works only in conditional types - Used in many built-in helpers