为什么在Vue.js源代码中看到TypeScript?

时间:2019-04-22 17:45:14

标签: javascript typescript vue.js

我只是看了一下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))
}

1 个答案:

答案 0 :(得分:6)

这实际上是Flow代码。您可以在some files的开头看到/* @flow */注释,以启用工具的类型检查。它与TypeScript有点类似,但是两者并不相同。

通过快速浏览the Vue.js github reposrc文件夹可以发现,他们确实确实将.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) {