Vue.js源代码中的“百分号”是什么意思

时间:2018-10-30 16:15:57

标签: vue.js flow

我正在github上阅读Vue.js的源代码(here),偶然发现了我既不知道也找不到答案的东西。

来源中的相关部分:

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

“%”的功能或含义是什么?

1 个答案:

答案 0 :(得分:1)

这是一个称为Predicate Function的Flow功能。

简而言之,它表示执行类型细化的函数。

在特定示例中,这意味着Flow知道,使用isObject对值进行正面测试时,该值将为object类型。

流具有一些经过改进的检查,以精简类型,包括obj !== nulltypeof obj === 'object'之类的内容,但是如果将其提取到返回isObject的通用boolean函数中, ,除非您用%checks对其进行标记,否则Flow将不会相信该函数正在执行类型细化。

请注意,TypeScript具有类似的功能,称为User-Defined Type Guards