🔨 Переосмысление цветовой системыДизайн система? Нет, цветовая система! Очень интересный пример использования системы типов для работы с цветами:
🔵Система проектирования предоставляет цвета для фона, переднего плана и границ.
🔵Каждый цвет может находиться в четырех состояниях: обычном, зависшем, отключенном и нажатом.
🔵Исторически использовался подкласс UIColor, но он не работал с динамическими темами
Проблемы UIColor:
🔴UIColor не предназначен для создания подклассов.
🔴Отсутствие безопасности типов: любой экземпляр UIColor можно использовать где угодно.
🔴Повышение уровня кастомизации требует правильного использования цвета.
Новый подход с фантомными типами:
🟢Введены фантомные типы для обеспечения безопасности ввода на основе контекста.
🟢Определен протокол с тремя перечислениями для ролей цвета.
🟢Создана типобезопасная оболочка для UIColor, обеспечивающая правильную цветовую роль.
У автора большие ожидания от идеи системы типов в Swift, я же надеюсь что это не уйдет дальше идеи и мы останемся с текущей концепцией семантических цветов -
accentColor, primary, secondary
. Но сама по себе идея использования системы типов для реализации безопасного использования имеет шанс на жизнь
#swift #color #system