.flowconfig [declarations]
У сторонних библиотек часто бывают некорректные определения типов или определения типов, совместимые только с определённой версией Flow. В таких случаях может быть полезно использовать сведения о типах из сторонних библиотек, не проверяя их содержимое на соответствие типам.
Раздел [declarations] в файле .flowconfig указывает Flow разбирать файлы, соответствующие заданным регулярным выражениям, в режиме объявлений. В режиме объявлений код не проверяется на соответствие типам. Однако сигнатуры функций, классов и т. д. извлекаются и используются средством проверки типов при проверке другого кода.
Условно можно считать, что в режиме объявлений Flow по-прежнему проверяет файлы на соответствие типам, но ведёт себя так, как если бы в каждой строке был комментарий $FlowFixMe.
См. также раздел [untyped] о том, как не проверять файлы на соответствие типам, а вместо этого использовать any для всего содержимого.
Следует помнить:
- Режим объявлений следует использовать только для существующего стороннего кода. Никогда не используйте его для кода, который находится под вашим контролем.
- Это регулярные выражения OCaml.
- Эти регулярные выражения сопоставляются с абсолютными путями. Вероятно, они должны начинаться с
.*
Например, раздел [declarations] может выглядеть так:
[declarations] .*/third_party/.* .*/src/\(foo\|bar\)/.* .*\.decl\.js
В этом разделе [declarations] файлы будут разбираться в режиме объявлений:
- Любой файл или каталог внутри каталога с именем
third_party - Любой файл или каталог внутри
.*/src/fooили внутри.*/src/bar - Любой файл с расширением
.decl.js
В регулярных выражениях можно использовать подстановочный элемент <PROJECT_ROOT>. Во время выполнения Flow будет трактовать этот элемент как абсолютный путь к корневому каталогу проекта. Это полезно для написания регулярных выражений, которые задают относительные, а не абсолютные пути.
Например, можно написать:
[declarations] <PROJECT_ROOT>/third_party/.*
Это приведёт к разбору в режиме объявлений любого файла или каталога внутри каталога с именем third_party/ в корневом каталоге проекта. Однако, в отличие от .*/third_party/.* в предыдущем примере, файлы и каталоги внутри каталогов с именем third_party/, например src/third_party/, разбираться НЕ будут.
См. также
-
.flowconfig [untyped]— обработка модулей какanyвместо извлечения сигнатур типов -
.flowconfig [ignore]— полное исключение файлов из механизма разрешения модулей Flow -
Файлы объявлений — файлы
.flowдля ручного объявления типов модулей
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/config/declarations