Spec-Zone.ru › Flow

.flowconfig [declarations]

У сторонних библиотек часто бывают некорректные определения типов или определения типов, совместимые только с определённой версией Flow. В таких случаях может быть полезно использовать сведения о типах из сторонних библиотек, не проверяя их содержимое на соответствие типам.

Раздел [declarations] в файле .flowconfig указывает Flow разбирать файлы, соответствующие заданным регулярным выражениям, в режиме объявлений. В режиме объявлений код не проверяется на соответствие типам. Однако сигнатуры функций, классов и т. д. извлекаются и используются средством проверки типов при проверке другого кода.

Условно можно считать, что в режиме объявлений Flow по-прежнему проверяет файлы на соответствие типам, но ведёт себя так, как если бы в каждой строке был комментарий $FlowFixMe.

См. также раздел [untyped] о том, как не проверять файлы на соответствие типам, а вместо этого использовать any для всего содержимого.

Следует помнить:

  1. Режим объявлений следует использовать только для существующего стороннего кода. Никогда не используйте его для кода, который находится под вашим контролем.
  2. Это регулярные выражения OCaml.
  3. Эти регулярные выражения сопоставляются с абсолютными путями. Вероятно, они должны начинаться с .*

Например, раздел [declarations] может выглядеть так:

[declarations]
.*/third_party/.*
.*/src/\(foo\|bar\)/.*
.*\.decl\.js

В этом разделе [declarations] файлы будут разбираться в режиме объявлений:

  1. Любой файл или каталог внутри каталога с именем third_party
  2. Любой файл или каталог внутри .*/src/foo или внутри .*/src/bar
  3. Любой файл с расширением .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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API