Выделите признак, по которому компилятор различает варианты union
Зачем
Зачем это нужно
Отделите проверку типов при сборке от проверки внешнего JSON
Составьте положительные и отрицательные примеры для tsc
Вопросы
Частые вопросы
Как сформулировать запрос о сужении union?
type Result = {ok:true; value:string} | {ok:false; error:string}; function label(r:Result){return r.value.toUpperCase()} При strict:true TypeScript запрещает value. Объясни причину, исправь через проверку ok без any и утверждений типа, покажи вызовы для обоих вариантов и отдельную проверку некорректного входа из JSON. Не утверждай, что запускал tsc.
Что прислать вместе с ошибкой TypeScript?
Вставьте связанные типы, проблемную функцию, полный текст диагностики и важные параметры tsconfig. Укажите версию TypeScript. Удалите секреты из примеров ответов API; сначала разберите минимальный тип, затем усложняйте его.
Какие случаи проверить после правки Result?
Запустите tsc в своём проекте. Вариант {ok:true,value:'текст'} должен дать 'ТЕКСТ', а {ok:false,error:'сбой'} — обработанный отказ. Вход без обязательных полей должен отвергаться отдельной проверкой данных.
Почему as Result не проверяет ответ API?
Утверждение типа сообщает компилятору ваше предположение, но не проверяет объект во время выполнения. Для внешних данных нужен валидатор или явные проверки; успешная компиляция сама по себе не делает JSON корректным.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.