#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
Question 30 of 48hard

What 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>; // string

Extract 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>; // string

Extract Promise Value

code.tsTypeScript
type Awaited<T> = T extends Promise<infer U> ? U : T;

type P = Promise<string>;
type Value = Awaited<P>; // string

Nested Inference

code.tsTypeScript
type Flatten<T> = T extends Array<infer U>
  ? Flatten<U>
  : T;

type Nested = number[][][];
type Flat = Flatten<Nested>; // number