我只是看了一下vue.js源代码,然后看到了一些奇怪的代码,经过一些研究,我才知道是TypeScript语法。我的问题是,此语法在“ .js”文件中,我不明白,因为我知道TypeScript文件(.ts)应该编译为纯JS。那么,为什么我仍然在.js文件的function参数中看到类型注释?
function hasAncestorData (node: VNode) {
const parentNode = node.parent
return isDef(parentNode) && (isDef(parentNode.data) || hasAncestorData(parentNode))
}
答案 0 :(得分:6)
这实际上是Flow代码。您可以在some files的开头看到/* @flow */
注释,以启用工具的类型检查。它与TypeScript有点类似,但是两者并不相同。
通过快速浏览the Vue.js github repo的src
文件夹可以发现,他们确实确实将.js
用于带有流代码的JavaScript,例如在src/core/vdom/create-component.js
中:>
const componentVNodeHooks = { init (vnode: VNodeWithData, hydrating: boolean): ?boolean {
但是,如果我们查看dist
文件夹,则可以看到那些Flow类型注释已被删除以进行分发。例如,以下是dist/vue.js
中的上述内容(该行号会随着时间推移而腐烂):
var componentVNodeHooks = { init: function init (vnode, hydrating) {