Что означает «знак процента» в исходном коде Vue.js - PullRequest
0 голосов
/ 30 октября 2018

Я читаю исходный код Vue.js ( здесь ) на github и наткнулся на что-то, чего я не знаю и не могу найти ответ.

Связанная часть от источника:

export function isObject (obj: mixed): boolean %checks {
  return obj !== null && typeof obj === 'object'
}

Какова функция или значение «%»?

1 Ответ

0 голосов
/ 30 октября 2018

Это функция потока, называемая Функция предиката .

Короче говоря, это обозначает функцию, выполняющую уточнение типа.

В конкретном примере это означает, что Flow знает, что когда значение проверяется положительно с использованием isObject, оно будет иметь тип object.

Flow имеет несколько встроенных проверок для уточнения типа, включая такие вещи, как obj !== null и typeof obj === 'object', но если вы извлечете его в общую функцию isObject, возвращающую boolean, Flow не будет доверять, что Функция выполняет уточнение типа, если вы не пометите его как %checks.

Обратите внимание, что TypeScript имеет аналогичную функцию, называемую Определяемые пользователем гвардии типов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...