.flowconfig [options]
Раздел [options] в файле .flowconfig может содержать несколько пар «ключ — значение» следующего вида:
[options] keyA=valueA keyB=valueB
Для всех пропущенных параметров будут использоваться значения по умолчанию. Некоторые параметры можно переопределить с помощью флагов командной строки.
Доступные параметры
all
Тип: boolean
Установите значение true, чтобы проверять все файлы, а не только файлы с @flow.
Значение по умолчанию для all — false.
autoimports
Тип: boolean
Если параметр включен, автодополнение IDE предлагает экспорты из других файлов и автоматически вставляет необходимые операторы import. Для неопределенных переменных также доступно действие с кодом «быстрое исправление», предлагающее соответствующие импорты.
Значение по умолчанию для autoimports — true.
babel_loose_array_spread
Тип: boolean
Установите значение true, чтобы проверять, что синтаксис распространения массива используется только с массивами, а не с произвольными итерируемыми объектами (например, Map или Set). Это полезно, если вы преобразуете код с помощью Babel в нестрогом режиме, который делает это не соответствующее спецификации предположение во время выполнения.
Например:
const set = new Set(); const values = [...set]; // Valid ES2015, but Set is not compatible with ReadonlyArray in Babel loose mode
Значение по умолчанию для babel_loose_array_spread — false.
ban_spread_key_props
Тип: boolean
Установите значение true, чтобы выдавать ошибку, если атрибут распространения JSX содержит объект со свойством key. React не поддерживает распространение key — оно всегда определяется в месте вызова, поэтому key внутри распространяемого объекта молча игнорируется во время выполнения. Включение этого параметра позволяет обнаружить такие случаи как ошибки Flow с кодом ошибки invalid-spread-prop.
Например:
const props = {key: 'item-1', name: 'Alice'};
<Component {...props} />; // Error: Cannot spread an object that contains a `key` property Flow также обнаруживает свойства key внутри объединенных типов и вложенных распространяемых объектов:
declare const props: {name: string} | {key: string};
<Component {...props} />; // Error Чтобы исправить эти ошибки, передавайте key непосредственно как атрибут JSX, а не распространяйте его:
const props = {name: 'Alice'};
<Component key="item-1" {...props} />; // OK Значение по умолчанию для ban_spread_key_props — false.
component_syntax
Тип: boolean
Включает синтаксис компонентов и синтаксис хуков Flow — специальные примитивы component и hook для написания компонентов и хуков React. Включение этого параметра также активирует правила Flow для React, выявляющие неправильное использование компонентов и хуков. Установка значения false отключает и синтаксис, и эти правила.
Значение по умолчанию для component_syntax — true.
emoji
Тип: boolean
Установите значение true, чтобы добавлять эмодзи в сообщения о состоянии, которые Flow выводит во время проверки проекта.
Значение по умолчанию для emoji — false.
enums
Тип: boolean
Включает перечисления Flow. Если параметр включен, Flow понимает объявления enum. Помимо этого параметра .flowconfig, требуются дополнительные шаги настройки (преобразование Babel и пакет времени выполнения). Установите значение false, чтобы отключить поддержку перечислений.
Значение по умолчанию для enums — true.
experimental.const_params
Тип: boolean
Если установить значение true, Flow будет считать все параметры функций неизменяемыми привязками. Повторное присваивание параметру вызовет ошибку, что позволит Flow менее консервативно выполнять уточнение типов.
Значение по умолчанию — false.
experimental.strict_es6_import_export
Тип: boolean
Установите значение true, чтобы включить набор правил линтинга, обеспечивающих строгое соблюдение практик импорта и экспорта модулей ES6. Если параметр включен, Flow обнаруживает шаблоны, которые могут привести к неоднозначному поведению или проблемам взаимодействия в модулях ES.
Эти правила линтинга выдают ошибки только при включенном параметре конфигурации. Без experimental.strict_es6_import_export=true правила не действуют, даже если они настроены в разделе [lints]. Для каждого правила можно независимо задать значение error, warn или off.
Полный список правил, подробные примеры и пояснения см. на странице правил линтинга для строгого импорта и экспорта.
Значение по умолчанию для experimental.strict_es6_import_export — false.
format.bracket_spacing
Тип: boolean
Определяет, вставляет ли Flow пробелы между скобками и содержимым в литералах объектов, аннотациях типов объектов и спецификаторах импорта/экспорта в генерируемом коде (например, при автоматических исправлениях и действиях с кодом).
Если установлено значение true (по умолчанию), Flow генерирует код с пробелами внутри фигурных скобок:
import { Foo } from "./foo";
type T = { bar: number }; Если установлено значение false, Flow не вставляет эти пробелы:
import {Foo} from "./foo";
type T = {bar: number}; Значение по умолчанию для format.bracket_spacing — true.
format.single_quotes
Тип: boolean
Определяет, предпочитает ли Flow строки в одинарных кавычках строкам в двойных кавычках в генерируемом коде (например, при автоматических исправлениях и действиях с кодом).
Если установлено значение true, Flow генерирует строковые литералы в одинарных кавычках:
import Foo from './foo';
Если установлено значение false (по умолчанию), Flow использует двойные кавычки:
import Foo from "./foo";
Если выбранный символ кавычки присутствует в значении строки, Flow автоматически использует другой тип кавычек, чтобы свести к минимуму экранирование.
Значение по умолчанию для format.single_quotes — false.
include_warnings
Тип: boolean
Установка значения true приводит к тому, что команды Flow включают предупреждения в вывод ошибок. По умолчанию предупреждения скрыты в интерфейсе командной строки, чтобы избежать избыточного вывода в консоль. (Для показа предупреждений гораздо лучше подходит IDE.)
Значение по умолчанию — false.
jest_integration
Тип: boolean
Установите значение true, чтобы включить специальную поддержку функций мокирования модулей Jest. Если параметр включен, Flow разрешает аргумент с именем модуля, переданный следующим методам jest, так же, как для require() и import:
jest.createMockFromModulejest.mockjest.unmockjest.deepUnmockjest.doMockjest.dontMockjest.setMockjest.requireActualjest.requireMock
Если модуль не удается разрешить, Flow сообщает об ошибке cannot-resolve-module:
jest.mock('./utils'); // OK — module exists
jest.mock('./nonexistent'); // Error: Cannot resolve module `./nonexistent`. Без этого параметра Flow считает jest обычным значением и не выполняет разрешение модулей для строковых аргументов, переданных этим функциям.
Примечание: Этот параметр действует только в том случае, если
jest— глобальная переменная (а не локальная). Если у вас есть локальная привязка с именемjest(например,const jest = ...), Flow не будет выполнять разрешение модулей для вызовов ее методов.
Значение по умолчанию для jest_integration — false.
lazy_mode
Тип: boolean
Установка lazy_mode в .flowconfig приведет к тому, что новые серверы Flow для этого корневого каталога будут работать в ленивом режиме (или без него, если задано значение false). Этот параметр можно переопределить в командной строке с помощью флага --lazy-mode.
Значение по умолчанию — false.
В ленивом режиме Flow распределяет файлы по четырем категориям:
- Файлы в фокусе — файлы, с которыми пользователь активно работает.
- Зависимые файлы — файлы, зависящие от файлов в фокусе (изменения в файлах в фокусе могут привести к ошибкам здесь).
- Файлы-зависимости — файлы, необходимые для проверки типов файлов в фокусе и зависимых файлов.
- Непроверяемые файлы — все остальные файлы. Они анализируются, но проверка типов для них не выполняется.
Flow определяет файлы в фокусе, отслеживая изменения на диске (с помощью Watchman или встроенного средства отслеживания файлов). Для файлов, изменившихся, пока Flow не работал, Flow использует систему контроля версий (Git или Mercurial), чтобы найти все файлы, изменившиеся после точки слияния с основной веткой. Настроить ветку, с которой будет сравниваться текущая, можно с помощью file_watcher.mergebase_with (например, задайте origin/master, если работаете с клоном репозитория).
В результате ленивый режим находит те же ошибки, что и полная проверка, если в предыдущих зависимостях нет ошибок. Например, если CI гарантирует отсутствие ошибок в основной ветке, Flow нет необходимости повторно проверять все неизменившиеся файлы.
Можно вручную указать файлы, которые Flow должен считать файлами в фокусе:
flow force-recheck --focus path/to/A.js path/to/B.js
max_header_tokens
Тип: integer
Flow старается не анализировать файлы без Flow. Для этого Flow должен начать лексический анализ файла, чтобы проверить, есть ли в нем @flow или @noflow. Этот параметр позволяет настроить, какую часть файла Flow анализирует, прежде чем решит, что в нем нет соответствующего блока документации.
- Нет ни
@flow, ни@noflow— разобрать этот файл, запретив синтаксис Flow, и не проверять его типы. -
@flow— разобрать этот файл, разрешив синтаксис Flow, и проверить его типы. -
@noflow— разобрать этот файл, разрешив синтаксис Flow, но не проверять его типы. Это запасной способ отключить Flow в файле, не удаляя весь специфичный для Flow синтаксис.
Значение по умолчанию для max_header_tokens — 10.
merge_timeout
Тип: unsigned integer
Максимальное время в секундах, отведенное на проверку типов файла или цикла файлов. Если во время этапа слияния (проверки типов) файл превышает это время ожидания, Flow пропустит его и запишет ошибку превышения времени ожидания.
Установка значения 0 полностью отключает ограничение времени ожидания.
Значение по умолчанию для merge_timeout — 100.
Этот параметр можно переопределить в командной строке с помощью флага --merge-timeout или переменной среды FLOW_MERGE_TIMEOUT.
module.declaration_dirnames
Тип: string
По умолчанию Flow ищет файлы объявлений (.flow) в каталоге @flowtyped в корне проекта. Файлы объявлений в этих каталогах позволяют предоставлять определения типов для сторонних модулей, не изменяя исходные пакеты (см. объявление модуля в каталоге @flowtyped).
С помощью module.declaration_dirnames можно настроить каталоги, в которых Flow ищет файлы объявлений. Если задать этот параметр явно, он заменит каталог @flowtyped по умолчанию целиком — поиск в @flowtyped больше выполняться не будет, если только вы не добавите его в список.
Например, если добавить:
[options] module.declaration_dirnames=<PROJECT_ROOT>/decl1 module.declaration_dirnames=<PROJECT_ROOT>/decl2
Тогда Flow будет искать файлы объявлений в каталогах decl1 и decl2 вместо @flowtyped. Спецификатор модуля, например foo, будет разрешен в decl1/foo.js.flow или decl2/foo.js.flow (либо в их вариантах index.js.flow), прежде чем Flow перейдет к node_modules.
Примечание:
module.declaration_dirnamesможно указать несколько раз, чтобы выполнять поиск в нескольких каталогах. Значения.и..недопустимы.
Значение по умолчанию — <PROJECT_ROOT>/@flowtyped.
module.file_ext
По умолчанию Flow ищет файлы с расширениями .js, .jsx, .mjs, .cjs и .json. Это поведение можно переопределить с помощью данного параметра.
Например, если добавить:
[options] module.file_ext=.foo module.file_ext=.bar
Тогда Flow будет искать файлы только с расширениями .foo и .bar.
Примечание:
module.file_extможно указать несколько раз.
module.ignore_non_literal_requires
Тип: boolean
Установите значение true, и Flow перестанет выдавать предупреждения, если вы используете require() не со строковым литералом.
Значение по умолчанию — false.
module.missing_module_generators
Тип: regex -> string
Укажите регулярное выражение для сопоставления с именами модулей и команду, которую следует предложить, разделив их символом ->.
Когда Flow обнаруживает ошибку cannot-resolve-module при импорте, имя модуля которого соответствует одному из настроенных шаблонов, он добавляет к сообщению об ошибке подсказку с предложением выполнить соответствующую команду для создания отсутствующего модуля.
Например, если добавить в .flowconfig следующее:
[options] module.missing_module_generators='.*\.css$' -> 'build-css-types'
Тогда при сообщении Flow об ошибке отсутствующего модуля для require('./Button.css') в сообщение об ошибке будет включено следующее:
Cannot resolve module `./Button.css`. Try running the command `build-css-types` to generate the missing module.
Если подходящий генератор не найден, сообщение об ошибке будет выглядеть так:
Cannot resolve module `./Button.css`.
Это полезно в кодовых базах, где определения типов создаются с помощью генерации кода (например, для CSS-модулей, запросов GraphQL или других ресурсов, не относящихся к JavaScript). Подсказка о генераторе сообщает разработчикам, какую команду выполнить, чтобы исправить ошибку.
Шаблоны — это регулярные выражения OCaml.
Примечание:
module.missing_module_generatorsможно указать несколько раз.
module.name_mapper
Тип: regex -> string
Укажите регулярное выражение для сопоставления с именами модулей и шаблон замены, разделив их символом ->.
Например:
module.name_mapper='^image![a-zA-Z0-9$_]+$' -> 'ImageStub'
Это заставляет Flow считать, что require('image!foo.jpg') — это require('ImageStub').
Это регулярные выражения OCaml. Используйте \( и \) (слеши обязательны!), чтобы создать захватывающую группу, на которую в шаблоне замены можно сослаться как на \1 (до \9).
Примечание:
module.name_mapperможно указать несколько раз.
module.name_mapper.extension
Тип: string -> string
Укажите расширение файла для сопоставления и заменяющее имя модуля, разделив их символом ->.
Примечание: Это просто сокращенная запись для
module.name_mapper='^\(.*\)\.EXTENSION$' -> 'TEMPLATE')
Например:
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/CSSFlowStub.js.flow'
Заставляет Flow считать, что require('foo.css') — это require(PROJECT_ROOT + '/CSSFlowStub').
Примечание:
module.name_mapper.extensionможно указать несколько раз для разных расширений.
module.system
Тип: node | haste
Модульная система, используемая для разрешения import и require. Meta использует режим Haste.
Значение по умолчанию — node.
module.system.node.allow_root_relative
Тип: boolean
Установите значение true, чтобы Flow разрешал импорты относительно корня проекта, то есть require('foo/bar.js') разрешался бы начиная с корневого каталога. Это соответствует поведению сборщиков, например Webpack, которые можно настроить на разрешение модулей от корня.
С помощью module.system.node.root_relative_dirname можно указать, в каких каталогах внутри корня выполнять поиск. По умолчанию используется сам корень.
Значение по умолчанию для module.system.node.allow_root_relative — false.
module.system.node.main_field
Тип: string
Flow читает файлы package.json, чтобы определить по полям "name" и "main" имя модуля и файл, который следует использовать для этого модуля.
Поэтому, если Flow обнаружит в .flowconfig следующее:
[options] module.system.node.main_field=foo module.system.node.main_field=bar module.system.node.main_field=baz
а затем встретит package.json с
{
"name": "kittens",
"main": "main.js",
"bar": "bar.js",
"baz": "baz.js"
} Flow использует bar.js для предоставления модуля "kittens".
Если этот параметр не задан, Flow всегда будет использовать поле "main".
См. эту задачу на GitHub, где изложена первоначальная мотивация.
module.system.node.package_export_condition
Тип: string
Укажите условие экспорта, которое Flow будет использовать при разрешении поля "exports" в package.json. Условный экспорт позволяет пакету сопоставлять один и тот же спецификатор модуля с разными файлами в зависимости от активных условий (например, import, require, node или default).
Например, если добавить:
[options] module.system.node.package_export_condition=import module.system.node.package_export_condition=node
Тогда Flow будет разрешать записи "exports" с использованием условий import и node.
Примечание:
module.system.node.package_export_conditionможно указать несколько раз.
module.system.node.resolve_dirname
Тип: string
По умолчанию Flow ищет модули Node в каталогах с именем node_modules. Это поведение можно настроить с помощью данного параметра.
Например, если добавить:
[options] module.system.node.resolve_dirname=node_modules module.system.node.resolve_dirname=custom_node_modules
Тогда Flow будет искать каталоги с именем node_modules или custom_node_modules.
Примечание:
module.system.node.resolve_dirnameможно указать несколько раз.
module.use_strict
Тип: boolean
Установите значение true, если используете транспилятор, который добавляет "use strict"; в начало каждого модуля.
Значение по умолчанию — false.
munge_underscores
Тип: boolean
Установите значение true, чтобы Flow считал свойства и методы классов, имена которых начинаются с подчеркивания, приватными. Используйте этот параметр вместе с любым преобразователем, обеспечивающим приватность таких членов во время выполнения (например, плагином Babel).
Значение по умолчанию — false.
name
Тип: string
Задайте имя проекта Flow. Оно используется для различения проектов Flow в сообщениях о состоянии редактора. Если имя задано, сообщения о состоянии LSP получают префикс Flow (<name>) вместо просто Flow.
Например, если задать:
[options] name=my-app
Тогда сообщения о состоянии LSP будут выглядеть как Flow (my-app): ... вместо Flow: .... Это полезно, если вы одновременно работаете в редакторе с несколькими проектами Flow: так становится понятно, к какому проекту относится каждое сообщение о состоянии.
Имя также включается во внутренние журналы Flow для диагностики.
Для name значение по умолчанию отсутствует.
no_flowlib
Тип: boolean
Flow содержит встроенные определения библиотек. Установка значения true укажет Flow игнорировать встроенные определения библиотек.
Значение по умолчанию — false.
no_unchecked_indexed_access
Тип: boolean
Установите значение true, чтобы Flow включал void в тип результата при индексировании массива или объекта со словарем. Это позволяет обнаруживать случаи обращения к элементу, который может отсутствовать во время выполнения, например выход за границы массива или обращение к отсутствующему ключу словаря.
По умолчанию обращение к элементу Array<string> возвращает string. Если включить этот параметр, то же обращение вернет string | void, заставляя обработать случай undefined:
const items: Array<string> = ["hello", "world"];
const item = items[0]; // type is `string | void` when enabled
// You must refine before using it as a string:
if (item != null) {
item.toUpperCase(); // OK
} Этот параметр влияет на следующие варианты индексированного доступа:
Массивы — обращение к элементам по индексу в Array<T> или ReadonlyArray<T> возвращает T | void вместо T:
declare const arr: Array<string>; const x = arr[0]; // string | void const y = arr[someIndex]; // string | void
Объекты с индексаторами — обращение к свойствам объектов-словарей (объектов с индексатором, например {[string]: T}) возвращает T | void вместо T как при доступе через квадратные скобки, так и через точку, если ключи явно не указаны в типе:
declare const dict: {[string]: number};
const a = dict["key"]; // number | void
const b = dict.key; // number | void Кортежи с динамическими ключами — обращение к кортежу с нелитеральным ключом возвращает T | void:
declare const tuple: [number, string, boolean]; declare const i: number; const val = tuple[i]; // number | string | boolean | void
Обратите внимание: обращение к кортежу с литеральным индексом не меняется — tuple[0] по-прежнему возвращает точный тип элемента (или ошибку выхода за границы):
declare const tuple: [number, string, boolean]; tuple[0]; // number (not number | void) tuple[1]; // string
Типы индексированного доступа не затрагиваются. Использование типов индексированного доступа, например T[K], в аннотациях типов по-прежнему возвращает тип элемента без void:
type Items = Array<string>; type Item = Items[number]; // string, not string | void
Запись undefined в массив или словарь, тип значения которого не включает void, по-прежнему считается ошибкой независимо от этого параметра. Он влияет только на чтение.
Значение по умолчанию для no_unchecked_indexed_access — false.
Параметр noUncheckedIndexedAccess в TypeScript и no_unchecked_indexed_access в Flow — прямые аналоги. Полное сравнение см. в разделе Параметры конфигурации, совпадающие с TypeScript.
pattern_matching
Тип: boolean
Включает выражения и инструкции match в Flow, которые сопоставляют входное значение с набором шаблонов, чтобы условно проверить его структуру и извлечь значения. Установите значение false, чтобы отключить поддержку match.
Значение по умолчанию для pattern_matching — true.
react.custom_jsx_typing
Тип: boolean
Установите значение true, чтобы заменить встроенную проверку типов React JSX в Flow пользовательским типом функции. Если этот параметр включен, Flow проверяет типы при создании JSX-элементов, вызывая ваш глобально определенный тип React$CustomJSXFactory вместо встроенной проверки типов React.createElement.
Это полезно при работе с репозиториями (например, с самим репозиторием React), где компоненты и элементы не соответствуют встроенной модели компонентов React в Flow. Определив собственный тип фабрики, вы точно задаете, как проверяются компонент, props и дочерние элементы.
Определение React$CustomJSXFactory
Если react.custom_jsx_typing включен, необходимо определить глобальный тип с именем React$CustomJSXFactory. Это должен быть тип функции, параметры которого соответствуют аргументам вызова создания JSX-элемента:
- компонент -- компонент, который будет отрисован (тег JSX)
- props -- тип объекта для атрибутов элемента
- дочерние элементы -- по одному параметру на каждый дочерний элемент между открывающим и закрывающим тегами
Тип возвращаемого значения определяет тип JSX-выражения.
Например, разрешающее определение, которое принимает любые значения:
declare type React$CustomJSXFactory = ( component: any, props: any, ...children: Array<any> ) => React.MixedElement;
Более строгое определение, которое требует указания конкретных типов:
declare type React$CustomJSXFactory = (
component: React.ElementType,
props: {name: string},
child1: number,
child2: string,
) => React.MixedElement; При использовании приведенного выше строгого определения Flow проверяет, что JSX-элементы соответствуют точным типам параметров: компонент должен быть React.ElementType, props должны содержать свойство name типа string, а также необходимо передать ровно два дочерних элемента типов number и string.
Как это работает
Когда Flow встречает JSX-выражение, например <Com foo="bar">{1}{2}</Com>, он преобразует создание элемента в вызов типа React$CustomJSXFactory:
// JSX:
<Com foo="bar">{1}{2}</Com>
// Checked as if calling:
React$CustomJSXFactory(Com, {foo: "bar"}, 1, 2) Каждый дочерний элемент передается как отдельный аргумент (не собирается в массив), поэтому при необходимости тип фабрики может требовать для каждого дочернего элемента свой тип.
При использовании классической среды выполнения React Flow по-прежнему проверяет, что React.createElement находится в области видимости и совместим с типом React$CustomJSXFactory. Если React или React.createElement отсутствует или несовместим, Flow выдает ошибку в дополнение к проверке JSX по пользовательскому типу фабрики.
Настройка
Добавьте следующее в файл .flowconfig:
[options] react.custom_jsx_typing=true
Затем определите React$CustomJSXFactory как глобальный тип в файле определения библиотеки (.js.flow):
// flow-typed/custom-jsx.js.flow declare type React$CustomJSXFactory = ( component: any, props: any, ...children: Array<any> ) => React.MixedElement;
Flow предоставляет пространство имен React глобально, поэтому в файлах .js.flow импортировать его не нужно.
Значение по умолчанию для react.custom_jsx_typing — false.
react.runtime
Тип: automatic | classic
Установите значение automatic, если вы используете автоматическую среду выполнения React в @babel/plugin-transform-react-jsx. В противном случае используйте classic. Подробности о преобразовании см. в документации Babel.
Значение по умолчанию — classic.
server.max_workers
Тип: integer
Максимальное количество рабочих процессов, которые может запустить сервер Flow. По умолчанию сервер использует все доступные ядра.
relay_integration
Тип: boolean
Этот параметр включает интеграцию Flow с Relay. Когда интеграция включена, Flow выводит типы шаблонных строк с тегом graphql как типы, созданные компилятором Relay для соответствующего фрагмента, мутации, запроса и т. д. Благодаря этому можно опускать параметры типов в распространенных API Relay, таких как useFragment и usePreloadedQuery.
relay_integration.esmodules
Тип: boolean
Если включить этот параметр вместе с relay_integration, Flow будет рассматривать типы шаблонных строк с тегом graphql как экспорты по умолчанию ES-модулей, а не как импорты require CommonJS. Используйте этот параметр, если компилятор Relay настроен на вывод ES-модулей (например, с параметром eagerEsModules).
По умолчанию интеграция Flow с Relay предполагает, что файлы артефактов Relay используют CommonJS (module.exports = ...). Если включен параметр relay_integration.esmodules, Flow вместо этого разрешает типы как import default из модуля артефакта, что соответствует синтаксису export default ..., который Relay генерирует в режиме ESM.
[options] relay_integration=true relay_integration.esmodules=true
relay_integration.excludes
Тип: string
Этот параметр позволяет исключить некоторые каталоги проекта из интеграции Flow с Relay. Например:
relay_integration=true relay_integration.excludes=<PROJECT_ROOT>/dirA relay_integration.excludes=<PROJECT_ROOT>/dirB
unsuppressable_error_codes
Тип: string
Укажите код ошибки, которую нельзя подавить комментарием подавления (например, $FlowFixMe). Ошибки с такими кодами сообщаются всегда, даже если на них распространялся бы комментарий подавления. Это полезно, чтобы гарантировать, что определенные классы ошибок никогда не игнорируются. Пример см. в разделе Ошибки, которые нельзя подавить.
Примечание: можно указывать
unsuppressable_error_codesнесколько раз.
По умолчанию никакие коды ошибок нельзя исключить из подавления.
use_unknown_in_catch_variables
Тип: boolean
Изменяет тип по умолчанию для переменных catch с any на unknown. Например:
try {
} catch (e) {} в приведенном выше примере, если параметр имеет значение true, для catch будет задан тип unknown, поскольку для нее не указана явная аннотация типа.
Параметры useUnknownInCatchVariables в TypeScript и use_unknown_in_catch_variables в Flow полностью эквивалентны. Полное сравнение см. в разделе Параметры конфигурации, совпадающие с TypeScript.
Устаревшие и удаленные параметры
Если в вашем файле .flowconfig по-прежнему заданы какие-либо параметры из приведенного ниже списка, удалите или обновите их. Эти параметры устарели или больше не поддерживаются, а некоторые из них теперь приводят к ошибке при запуске Flow.
Ниже перечислены параметры [options], чтобы можно было перенести существующие файлы .flowconfig. В каждой записи указана версия Flow, в которой параметр изменился.
exact_by_default
Тип: boolean
По умолчанию объекты являются точными. Теперь это единственное поддерживаемое поведение:
type O1 = {foo: number}; // exact
type O2 = {| foo: number |}; // exact (explicit syntax)
type O3 = {foo: number, ...}; // inexact (explicit `...`) exact_by_default=true используется по умолчанию с 2023 года. Установка exact_by_default=false (при которой типы объектов были неточными, если только для них не использовался явный синтаксис точного типа {| |}) была объявлена устаревшей в Flow 0.314.0 и теперь запрещена. При миграции удалите этот параметр из файла .flowconfig. Дополнительные сведения см. в документации по объектам.
casting_syntax
Тип: as | colon | both
Удален в Flow 0.319.0. Синтаксис приведения типа as теперь является единственным поддерживаемым синтаксисом приведения, поэтому этот параметр больше ни на что не влияет (значение colon, соответствовавшее устаревшему синтаксису (x: T), было удалено ранее, в Flow 0.281.0). Рекомендации по миграции см. в разделе Переход с устаревшего синтаксиса.
suppress_type
Тип: string
Удален в Flow 0.280.0. Теперь поддерживается фиксированный набор комментариев подавления ($FlowFixMe и $FlowExpectedError, каждый с кодом ошибки); пользовательские идентификаторы подавления больше нельзя настраивать. О текущем синтаксисе см. раздел Подавление ошибок.
max_literal_length
Тип: unsigned integer
Удален в Flow 0.288.0. Теперь Flow определяет, выводить ли для строкового литерала точный или общий тип, с помощью естественного алгоритма вывода типов, поэтому этот порог длины больше не применяется.
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/config/options