All streams
Search
Write a publication
Pull to refresh

Comments 8

А что за CLI пишутся на тайпскрипте? Речь про ноду?

Ну под ноду пишут на js/ts да) Но зависит от CLI, бывает на другом языке для быстроты

The or() combinator means exactly one succeeds.

Оно должно бы было называться либо "xor", либо по-английски "either".

but because I was tired of seeing—and writing—the same validation code everywhere.

Все уже придумано до вас. Питоновский argparse (и порты) - парсилка здорового человека. Остальное ложится на пользователя:

Но использование и интеграция в систему типов TS выглядит удобной.

PS: По-другому можно выразиться, что надо проверять рано и fail-fast. До ухода в логику программы проверять опции, заполнять нужные поля. Таким образом бизнес-логике остается только пользоваться геттерами. Валидация логики по всей программе -- это как болезнь распространяющая всюду. Вместо этого иметь строгий "вход" данных внутрь периметра и единообразный "вывод" наружу.

Парсилка здорового человека — это optparse-applicative и, для ленивых, optparse-generic.

Как раз, кстати, парсится в по построению валидную структуру данных.

Нельзя разбирать данные в рыхлый тип, а затем проверять, валидны ли они.

Мда.

Забавно, не приходило в голову подобные вещи начинать не с типов данных, а, напротив, с описания разбора опций и их комбинаций, позволяя выводить типы компилятору.

Почему бы и нет, но не вполне понятно, чем это лучше того, чтобы просто на входе в cli-приложение массив аргументов отдать парсеру, а получить от него типизированные параметры. И больше нигде в приложении не вспоминать, что оно - консольное

Sign up to leave a comment.

Articles