Тег

F#

1 материалов

«Parse, don't validate» в языке, который сопротивляется: беда структурной типизации TypeScript (cekrem.github.io)

Эссе разбирает, как заставить принцип «parse, don't validate» работать в TypeScript, где из-за структурной типизации проверенный Email неотличим от любой строки. Лекарство — branded-тип: фантомный символ, из-за которого Email несовместим со string на этапе компиляции и исчезает в рантайме.

Старожилы треда разошлись, настоящая ли это идея или подмена: один считает, что брендирование лишь навешивает на строку ярлык «проверено», другой возражает, что любая гарантия типа — это в конечном счёте валидация, которой компилятор согласился доверять.