Условные типы являются весомой функциональностью TypeScript, которая позволяет вычислять типы основываясь на условиях. Это значит что, с их помощью, можно создавать сложные логики и спецификации, связывая разные типы данных в зависимости от определенных условий.
Работает эта функциональность следующим образом: если в TypeScript определен условный тип в виде T extends U ? X : Y
, то он будет вычислен в тип X
, при условии, что T
расширяет U
. В противном случае, тип будет вычислен в Y
.
type IsNumber<T> = T extends number ? "Yes" : "No";
type A = IsNumber<5>; // Ожидается "Yes"
type B = IsNumber<"foo">; // Ожидается "No"
В данном примере тип IsNumber<T>
вычисляет, является ли переданный тип T
числом (number
). Если это так, то результатом будет строка "Yes". Если тип T
не является числом, то результатом будет строка "No".
Другими словами, условные типы позволяют нам сформировать условное выражение, которое может вычислить и вернуть один тип или другой, в зависимости от переданного в него типа.
В заключении, условные типы TypeScript - это мощный инструмент для создания гибких и универсальных типов, который может значительно повысить гибкость вашего кода, повысить его надежность и устойчивость к ошибкам.