Spec-Zone.ru › Flow

Пустой тип

Тип empty не имеет значений. Это подтип всех остальных типов (нижний тип), противоположность unknown.

function throwIt(msg: string): empty {
  throw new Error(msg);
}
Сравнение с TypeScript

empty — это нижний тип Flow, которому в TypeScript соответствует never. Полное сравнение см. в разделе Обозначения типов в Flow и TypeScript.

Когда это использовать​

Используйте empty в качестве типа возвращаемого значения функций, которые ничего не возвращают (они всегда выбрасывают исключение). Также можно привести значение к типу empty, чтобы проверить полноту обработки: если вы исключили все элементы объединения, оставшееся значение должно иметь тип empty:

function f(x: 'a' | 'b'): number {
  switch (x) {
    case 'a':
      return 1;
    case 'b':
      return 2;
    default:
      return x as empty;
  }
}

Если бы вы не проверили все элементы объединения (например, изменили x, чтобы он имел тип 'a' | 'b' | 'c'), то x больше не имел бы тип empty в default, и Flow выдал бы ошибку.

Примечание. Если вы хотите, чтобы перечисления по умолчанию проверялись на полноту, без необходимости приводить значения к типу empty, вы можете включить и использовать в проекте перечисления Flow.

Поскольку empty — подтип всех типов, для значений типа empty разрешены любые операции. Однако, поскольку значения не могут иметь тип empty, это «безопасно», в отличие от any.

const str = "hello";


if (typeof str === "string") {
  str as string; // Yes it's a string
} else {
  // Works! Since we will never enter this branch
  str as empty;
  const n: number = str + 1;
}

Выше слово «безопасно» взято в кавычки, поскольку из-за пробелов в системе типизации вашего кода или ошибок в самом Flow возможны значения с типом empty.

Чтобы найти код, типизированный как empty, можно использовать команду coverage.

См. также​

  • Неизвестный тип — супертип всех типов (противоположность empty)
  • Любой тип — небезопасный обходной путь, который одновременно является верхним и нижним типом
  • Иерархия типов — взаимосвязь empty, unknown и any в полной иерархии типов
  • Объединения — приведение к типу empty в ветви default подтверждает полноту обработки всех элементов объединения
  • Выражения match — сопоставление с образцом со встроенной проверкой полноты

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

Spec-Zone.ru

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