当我在看vue源码的时候。我看到了
const vm: Component = this
这样一行。出自src/core/instance/init.js
const是javascript中常见的常量定义方法。但是我没有看到过这种带:
的语法结构。
其实这是flow在起作用。VUE是用flow进行静态类型检测。
我们其实可以在这个init.js
的最上方看到一行代码/* @flow */
这种冒号的结构就是vue利用flow进行静态结构检测的一个常见用法了。
其实在这个function定义的时候
export function initMixin (Vue: Class<Component>) {
这一行就已经用了flow的检测。
// @flow
function square(n: number): number {
return n * n;
}
square("2"); // Error!
这是Flow官网给出的介绍。