Spec-Zone.ru › Flow

.flowconfig [untyped]

Секция [untyped] в файле .flowconfig указывает Flow не проверять типы в соответствующих файлах, а вместо этого отбрасывать типы и считать модули типом any.

Это отличается от секции конфигурации [ignore], которая заставляет резолвер модулей игнорировать соответствующие файлы. В результате проверка типов для них не выполняется, а также их невозможно разрешить с помощью import или require. При игнорировании файлов необходимо предоставить отдельное описание библиотеки (например, через [libs] или flow-typed), чтобы проверять типы любых импортов из этих файлов, что не всегда может быть желательным.

Это также отличается от секции [declarations]. В этом случае содержимое файла также не проверяется на соответствие типам, но [declarations] извлекает сигнатуры функций, классов и т. д. и использует их при проверке другого кода.

[untyped] заставляет проверяющий типы инструмент игнорировать файл так, как если бы в нём находилось @noflow, разрешать модули как тип any, но при этом не игнорировать их в резолвере модулей. Каждый соответствующий файл анализируется, но считается, что в нём находится @noflow, поэтому его содержимое не проверяется на соответствие типам, а типы его экспортов задаются как any, но при этом его всё ещё можно require().

Flow 0.330 и новее​

Файлы сопоставляются с помощью шаблонов glob, заданных относительно проекта.

Обратите внимание на следующее:

  1. * совпадает с путями в пределах одного каталога, а ** — с путями через границы каталогов.
  2. Шаблоны задаются относительно корня проекта. Абсолютные пути и заполнитель <PROJECT_ROOT> не поддерживаются.

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

[untyped]
**/third_party/**
**/src/{foo,bar}/**
**/*.untyped.js

В этой секции [untyped] следующие файлы будут считаться не имеющими типов:

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

Обратите внимание на следующее:

  1. Это регулярные выражения OCaml.
  2. Эти регулярные выражения сопоставляются с абсолютными путями. Вероятно, они должны начинаться с .*

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

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

В этой секции [untyped] следующие файлы будут считаться не имеющими типов:

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

Spec-Zone.ru

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