Код Middle Реализация с нуля обновлено

История с отменой

Условие

createHistory(initial): present, push(value), undo(), redo(), canUndo, canRedo. Новое значение после отмены стирает ветку возврата.

Что проверяют тесты

  • отмена и возврат

  • границы

  • новое действие стирает ветку возврата

  • флаги

Как подойти

Модель past/present/future - стандарт для редакторов. Главная деталь, которую забывают: push после undo обязан очистить future, иначе redo вернёт состояние из другой ветки истории и пользователь увидит чужие данные. Для тяжёлых состояний вместо снимков хранят команды с методом отмены.

Подсказки: 2
  1. Три части: прошлое, настоящее, будущее.
  2. Новое действие после отмены делает ветку возврата недостижимой.

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

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