4 min read
•Question 30 of 48hardWhat is the infer keyword in TypeScript?
Type inference in conditional types.
What You'll Learn
- infer keyword usage
- Extracting types
- Practical examples
What is infer?
infer declares a type variable within a conditional type to extract and use part of a type.
code.tsTypeScript
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type Fn = () => string;
type Result = ReturnType<Fn>; // stringExtract Function Parameter Types
code.tsTypeScript
type Parameters<T> = T extends (...args: infer P) => any ? P : never;
type Fn = (name: string, age: number) => void;
type Params = Parameters<Fn>; // [string, number]Extract Array Element Type
code.tsTypeScript
type ElementType<T> = T extends (infer U)[] ? U : never;
type Arr = string[];
type El = ElementType<Arr>; // stringExtract Promise Value
code.tsTypeScript
type Awaited<T> = T extends Promise<infer U> ? U : T;
type P = Promise<string>;
type Value = Awaited<P>; // stringNested Inference
code.tsTypeScript
type Flatten<T> = T extends Array<infer U>
? Flatten<U>
: T;
type Nested = number[][][];
type Flat = Flatten<Nested>; // number