Обобщённые typealias: имена для уродливых типов 👽
🔥 typealias в Swift умеет принимать параметры типа и ограничения — и превращать нечитаемый вложенный дженерик в слово из предметной области. Сразу к точности: это SE-0048, Swift 3. Не новинка, просто недоиспользуемая возможность. Забавная деталь для педантов: и пропозал, и Language Guide утверждают, что алиас не может вводить дополнительные ограничения, — но в исходниках самой книги стоит пометка, что компилятор этого не проверяет. where-клаузы тоже принимаются, хотя в грамматике TSPL их нет.
⚠️ И важное про протоколы. typealias внутри протокола — это конкретный алиас, а не точка кастомизации. Реализующий тип его не переопределяет. Если нужна кастомизация — это associatedtype. Ещё: необобщённый typealias не может нести where-клаузу.