Comments 4
Если есть задача генерации валидаторов по типам — в некоторых случаях можно решить обратную задачу — написать валидаторы и вывести по ним типы. Тем более, что обычно в типах недостаточно информации для валидации (типа длин строк, ограничения на значения, enum и тп).
Еще один вариант, если есть возможность использовать JSON-схемы для валидации — использовать инструменты для генерации типов из схемы.
import { formValidators } from 'components/SomeForm';
export const auth: AuthApiRoute = {
url: `/auth`,
name: `auth`,
method: 'POST',
customValidateRequest(requestParams) {
return requestParams.login.length <= 50;
// return formValidators.login(requestParams.login);
}
};
В данном случае можно писать либо уникальные проверки, либо синхронизировать с другими валидаторами — например, полей формы. В общем, достаточно удобно.
JSON-схему писать довольно муторно, количество условий сильно разрастается, и вместо гибких функций, как в примере выше, приходится создавать множество параметров — а если требуется композиция с другими валидациями (formValidators), то соединять разные JSON-схемы приходится строковыми ссылками, что автоматически переводит проект в разряд неявного и сложно поддерживаемого.
Также перевод несовместимых сущностей друг в друга в любом случае не получится корректным. Если написать валидаторы, состоящие из регулярок и проверочных функций с композицией с другими валидаторами — то типы из этого не сгенерировать, разве что только брать ReturnValue — но он по идее всегда будет Boolean. Так что не вижу варианта использовать подобное на практике, к сожалению.
Решал похожую задачу — перезапускать webpack после исполнения gulp-таски.
aggregateTimeout справился прекрасно, пересборка пусть и не мгновенная, но достаточная для комфортной разработки
Недавно было найдено решение https://github.com/DmitryKoterov/conditional-aggregate-webpack-plugin , но есть определенный issue, который я там описал. С доработкой все работает достаточно стабильно, и пересборка блочится пока не будут выполнены необходимые условия, измененные файлы агрегируются.
Генерация вспомогательных файлов: реэкспорт, экспортный объект, валидаторы из моделей — можно ли подружить с Webpack?