"percentage sign" 在 Vue.js 源代码中是什么意思
What does the "percentage sign" mean in the Vue.js source code
我正在 github 上阅读 Vue.js 的源代码 (here),偶然发现了一些我不知道也找不到答案的东西。
来源的相关部分:
export function isObject (obj: mixed): boolean %checks {
return obj !== null && typeof obj === 'object'
}
“%”的作用或含义是什么?
这是一个名为 Predicate Function 的 Flow 功能。
简而言之,它表示执行类型细化的函数。
在具体的例子中,表示Flow知道当使用isObject
对一个值进行正向测试时,它将是object
.
类型
Flow 有一些内置检查来优化类型,包括 obj !== null
和 typeof obj === 'object'
之类的东西,但是如果您将它提取到返回 [=15] 的通用 isObject
函数=], Flow 不会相信该函数正在执行类型优化,除非您用 %checks
.
标记它
请注意,TypeScript 具有类似的功能,称为 User-Defined Type Guards。
我正在 github 上阅读 Vue.js 的源代码 (here),偶然发现了一些我不知道也找不到答案的东西。
来源的相关部分:
export function isObject (obj: mixed): boolean %checks {
return obj !== null && typeof obj === 'object'
}
“%”的作用或含义是什么?
这是一个名为 Predicate Function 的 Flow 功能。
简而言之,它表示执行类型细化的函数。
在具体的例子中,表示Flow知道当使用isObject
对一个值进行正向测试时,它将是object
.
Flow 有一些内置检查来优化类型,包括 obj !== null
和 typeof obj === 'object'
之类的东西,但是如果您将它提取到返回 [=15] 的通用 isObject
函数=], Flow 不会相信该函数正在执行类型优化,除非您用 %checks
.
请注意,TypeScript 具有类似的功能,称为 User-Defined Type Guards。