export default class Watcher {
constructor (
vm: Component,
expOrFn: string | Function,
cb: Function,
options?: Object = {}
) {
...
if (typeof expOrFn === 'function') {
this.getter = expOrFn
} else {
this.getter = parsePath(expOrFn)
}
...
this.value = this.lazy ? undefined : this.get()
}
}
这是ts吧,不是es6。
补充一下楼上的。
在 constructor 接收的参数中是明显有类型的静态检查的。
比如 expOrFn 只能接收 string 或者 function 后面根据这个类型改写 getter 方法。