Senior #conditional-types#infer#distributive#advanced-types
Conditional types và infer hoạt động thế nào? Distributive conditional type là gì?
⚡ Trả lời nhanh
`T extends U ? X : Y` chọn type theo điều kiện; `infer R` trong nhánh `extends` trích một type con (như phần tử mảng, kiểu trả về). Khi T là type tham số trần và nhận union thì điều kiện phân phối (distributive) lên từng thành viên; bọc `[T]` để tắt hành vi đó.
Ví dụ
main.ts · sửa được
inferchỉ dùng được trong mệnh đềextendscủa conditional type. Có thể suy luận nhiều vị trí, ví dụT extends (...args: infer A) => infer R.ReturnType,Parameters,Awaited,Exclude,Extractđều là conditional type.Exclude<T, U> = T extends U ? never : Thoạt động nhờ distribution:neverbiến mất khỏi union.- Đệ quy conditional type (như
Unwrap) có giới hạn độ sâu; TS có tail-recursion optimization cho dạng cụ thể.