.flowconfig [untyped]
Секция [untyped] в файле .flowconfig указывает Flow не проверять типы в соответствующих файлах, а вместо этого отбрасывать типы и считать модули типом any.
Это отличается от секции конфигурации [ignore], которая заставляет резолвер модулей игнорировать соответствующие файлы. В результате проверка типов для них не выполняется, а также их невозможно разрешить с помощью import или require. При игнорировании файлов необходимо предоставить отдельное описание библиотеки (например, через [libs] или flow-typed), чтобы проверять типы любых импортов из этих файлов, что не всегда может быть желательным.
Это также отличается от секции [declarations]. В этом случае содержимое файла также не проверяется на соответствие типам, но [declarations] извлекает сигнатуры функций, классов и т. д. и использует их при проверке другого кода.
[untyped] заставляет проверяющий типы инструмент игнорировать файл так, как если бы в нём находилось @noflow, разрешать модули как тип any, но при этом не игнорировать их в резолвере модулей. Каждый соответствующий файл анализируется, но считается, что в нём находится @noflow, поэтому его содержимое не проверяется на соответствие типам, а типы его экспортов задаются как any, но при этом его всё ещё можно require().
Flow 0.330 и новее
Файлы сопоставляются с помощью шаблонов glob, заданных относительно проекта.
Обратите внимание на следующее:
-
*совпадает с путями в пределах одного каталога, а**— с путями через границы каталогов. - Шаблоны задаются относительно корня проекта. Абсолютные пути и заполнитель
<PROJECT_ROOT>не поддерживаются.
Например, секция [untyped] может выглядеть так:
[untyped]
**/third_party/**
**/src/{foo,bar}/**
**/*.untyped.js В этой секции [untyped] следующие файлы будут считаться не имеющими типов:
- Любой файл или каталог внутри каталога с именем
third_party - Любой файл или каталог внутри каталога с именем
src/fooилиsrc/bar - Любой файл с расширением
.untyped.js
Чтобы сопоставить только каталог в корне проекта, начните шаблон с его имени:
[untyped] third_party/**
Файлы внутри корневого каталога third_party/ в этом случае будут считаться не имеющими типов, а файлы внутри других каталогов с именем third_party/ — нет, например, src/third_party/.
Исключения
Иногда может потребоваться считать не имеющими типов все файлы внутри каталога, за исключением нескольких. Для этого можно использовать необязательный префикс «!», который инвертирует шаблон. В этом случае любой файл, соответствующий шаблону и исключённый предыдущим шаблоном, снова будет проверяться на соответствие типам.
[untyped] third_party/** !third_party/typed-package-A/** !third_party/typed-package-B/**
Flow 0.329 и более ранние версии
Следующий синтаксис регулярных выражений работает в Flow 0.329 и более ранних версиях.
Обратите внимание на следующее:
- Это регулярные выражения OCaml.
- Эти регулярные выражения сопоставляются с абсолютными путями. Вероятно, они должны начинаться с
.*
Например, секция [untyped] может выглядеть так:
[untyped] .*/third_party/.* .*/src/\(foo\|bar\)/.* .*\.untyped\.js
В этой секции [untyped] следующие файлы будут считаться не имеющими типов:
- Любой файл или каталог внутри каталога с именем
third_party - Любой файл или каталог внутри
.*/src/fooили внутри.*/src/bar - Любой файл с расширением
.untyped.js
В регулярных выражениях можно использовать заполнитель <PROJECT_ROOT>. Во время выполнения Flow будет считать этот заполнитель абсолютным путём к корневому каталогу проекта. Это удобно, если нужно записать регулярные выражения относительно корня, а не в виде абсолютных путей.
Например, можно написать:
[untyped] <PROJECT_ROOT>/third_party/.*
В этом случае любой файл или каталог внутри каталога с именем third_party/ в корне проекта будет считаться не имеющим типов. Однако, в отличие от .*/third_party/.* в предыдущем примере, этот шаблон НЕ будет совпадать с файлами или каталогами внутри каталогов с именем third_party/, например src/third_party/.
См. также
-
.flowconfig [declarations]— связанный режим, который извлекает сигнатуры типов, не выполняя проверку типов -
.flowconfig [ignore]— полное исключение файлов из резолвера модулей Flow - Any — тип, которому соответствуют модули без типов
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/config/untyped