Search
Write a publication
Pull to refresh

Comments 4

Если есть задача генерации валидаторов по типам — в некоторых случаях можно решить обратную задачу — написать валидаторы и вывести по ним типы. Тем более, что обычно в типах недостаточно информации для валидации (типа длин строк, ограничения на значения, enum и тп).


Еще один вариант, если есть возможность использовать JSON-схемы для валидации — использовать инструменты для генерации типов из схемы.

Спасибо за идею, сейчас подумаю. Ограничения на значения можно сделать простым перечислением констант `«POST » | «GET»`, как в статье, а проверку регулярками (которые в том числе могут проверять длину строки) либо функциями я реализую таким образом:

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, который я там описал. С доработкой все работает достаточно стабильно, и пересборка блочится пока не будут выполнены необходимые условия, измененные файлы агрегируются.

Sign up to leave a comment.

Articles