Spec-Zone.ru › Flow

Подавление ошибок

Flow сообщает о многих разных ошибках для распространённых ошибок программирования, но не все шаблоны JavaScript могут быть поняты Flow. Если вы уверены, что ваш код правильный, и Flow сообщает слишком много ошибок, вы можете подавить ошибку, чтобы Flow её не сообщал.

Что такое подавление?

Подавление — это специальный вид комментария, который можно разместить в строке перед ошибкой типа. Он сообщает Flow, что не следует сообщать об этой ошибке при проверке вашего кода. Комментарии подавления выглядят следующим образом:

// <SUPPRESSOR>[<CODE>] extra text

Подавитель может быть одним из следующих:

  • $FlowFixMe: для ошибок типа, которые вы планируете исправить позже
  • $FlowIssue: для ошибки типа, которую, как вы предполагаете, является проблемой с Flow
  • $FlowExpectedError: для места, где вы ожидаете, что Flow выдаст ошибку типа (например, при выполнении некорректного приведения типов).
  • $FlowIgnore: для мест, где вы хотите, чтобы Flow игнорировал ваш код

Обратите внимание, что все подавители ведут себя одинаково; мы просто рекомендуем использовать их, как описано здесь, для собственного удобства.

Часть <CODE> подавления является необязательной, но при включении указывает, какой код ошибки затрагивает подавление.

Некоторые примеры комментариев подавления:

// $FlowFixMe

// $FlowIssue[incompatible-type]

/* $FlowIgnore[prop-missing] some other text here */

/* $FlowFixMe[incompatible-cast] this
    is a multi-line
    comment */

{ /* $FlowIssue this is how you suppress errors inside JSX */ }

Для того, чтобы быть корректным комментарием подавления, должны быть соблюдены некоторые условия:

  • Текст не может предшествовать подавителю или находиться между подавителем и кодом. Например: // some text then $FlowFixMe не является корректным подавлением, так же как и // $FlowIssue some text [incompatible-type] или ` //$FlowFixMe [prop-missing]` (обратите внимание на пробел здесь!).
  • Подавления должны быть в строке непосредственно перед ошибкой, которую они подавляют, иначе они не будут применены.

Уточнение подавлений с помощью кодов ошибок

Подавляемые ошибки Flow также будут иметь связанный с ними код ошибки (после версии 0.127). Этот код кратко описывает тип проблемы, о которой сообщает ошибка, и различается для разных типов ошибок.

Для предотвращения подавления разных типов ошибок в одной строке (по умолчанию подавления без кодов подавляют все ошибки в следующей строке), вы можете добавить код ошибки в своё подавление. Например: // $FlowFixMe[incompatible-type] будет подавлять только ошибки с кодом incompatible-type. Таким образом:

//$FlowFixMe[incompatible-type]
(3 : string);

не будет сообщать об ошибках, но

//$FlowFixMe[prop-missing]
(3 : string);

по-прежнему будет сообщать об несовместимости типов.

Чтобы подавить несколько кодов ошибок в одной строке, можно размещать комментарии подавления друг за другом, и они все будут применяться к первой строке без комментариев, как показано ниже:

let y : number | { x : number }  = 1;

// $FlowFixMe[incompatible-type]
// $FlowFixMe[prop-missing]
(y.x : string);

Это подавит обе две ошибки в этой строке.

© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/errors

Spec-Zone.ru

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