Что такое сужение типов (Type Narrowing) и какими способами оно выполняется?
Сужение — уточнение типа объединения до более конкретного на основе проверок:
typeof— для примитивов:typeof v === "string"- Truthiness — проверка на truthy/falsy:
if (user) { ... } - Equality — сравнение с литералами/null/undefined:
=== null in— наличие свойства:"data" in responseinstanceof— проверка по прототипной цепочке- Discriminated unions — по общему дискриминатору в union
- Пользовательские гарды:
function isA(x: unknown): x is A { ... } asserts— утверждение:asserts value is Type