Nâng CaoTypeScript iconTypeScript

Conditional types trong TypeScript là gì?

Conditional types: T extends U ? X : Y.

Evaluate tại compile time dựa vào type relationship.

typescript
// Cơ bản
type IsString<T> = T extends string ? true : false;
type A = IsString<string>; // true
type B = IsString<number>; // false

// Distributive: tự động phân phối trên union
type NonNullable<T> = T extends null | undefined ? never : T;
type C = NonNullable<string | null | undefined>; // string

// Infer: extract type từ bên trong
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type D = ReturnType<() => number>; // number

// Thực tế: flatten array type
type Flatten<T> = T extends Array<infer Item> ? Item : T;
type E = Flatten<string[]>; // string
type F = Flatten<number>;   // number

Nền tảng của Exclude, Extract, NonNullable, ReturnType, và nhiều utility types.

Xem toàn bộ TypeScript cùng filter theo level & chủ đề con.

Mở danh sách TypeScript