Код Junior Объединения и сужение обновлено

Ответ API как union: loading, error, success

Условие

Опиши RemoteData<T> как union по state: idle, loading, error (с message: string и retryable: boolean), success (с data: T).

Напиши describe(r: RemoteData<{ name: string }[]>): string:

  • idle → -; loading → Загрузка...;
  • error → Ошибка: <message> и, если retryable, в конце (повторить);
  • success → Пусто для пустого массива, иначе имена через , .

Используй исчерпывающий switch с never в default.

Примеры

describe({"state":"idle"}) // "-"
describe({"state":"loading"}) // "Загрузка..."
describe({"state":"error","message":"timeout","retryable":true}) // "Ошибка: timeout (повторить)"

Как подойти

Подсказки: 1
  1. Состояния взаимоисключающие, поэтому union, а не набор флагов isLoading, error?, data?.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.