我正在github上阅读Vue.js的源代码(here),偶然发现了我既不知道也找不到答案的东西。
来源中的相关部分:
export function isObject (obj: mixed): boolean %checks {
return obj !== null && typeof obj === 'object'
}
“%”的功能或含义是什么?
答案 0 :(得分:1)
这是一个称为Predicate Function的Flow功能。
简而言之,它表示执行类型细化的函数。
在特定示例中,这意味着Flow知道,使用isObject
对值进行正面测试时,该值将为object
类型。
流具有一些经过改进的检查,以精简类型,包括obj !== null
和typeof obj === 'object'
之类的内容,但是如果将其提取到返回isObject
的通用boolean
函数中, ,除非您用%checks
对其进行标记,否则Flow将不会相信该函数正在执行类型细化。
请注意,TypeScript具有类似的功能,称为User-Defined Type Guards。