Nâng CaoTypeScript iconTypeScript

Conditional types với distributive behavior là gì? Cách disable?

Distributive conditional types xảy ra khi type parameter T đứng trơn (naked) trong điều kiện extends: TypeScript sẽ tự động tách union ra và áp dụng điều kiện cho từng thành phần, ví dụ (A | B) extends U ? X : Y sẽ thành (A extends U ? X : Y) | (B extends U ? X : Y).

  • Hành vi này thường gây kết quả bất ngờ, ví dụ type IsNever<T> = T extends never ? true : false sẽ trả về never thay vì true khi T = never vì union rỗng không có phần tử nào để distribute.
  • Để disable distributive behavior, ta wrap type parameter trong tuple: [T] extends [U] ? X : Y, lúc này TypeScript sẽ so sánh toàn bộ union như một khối thay vì phân tách từng thành phần.

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

Mở danh sách TypeScript