我翻了下vue.js的源码看看,看到了一些奇怪的代码,研究了一下才知道是TypeScript语法。我的问题是,这个语法在一个“.js”文件中,我不明白,因为我知道 TypeScript 文件 (.ts) 应该编译成纯 JS。那么,为什么我仍然在 .js 文件的函数参数中看到类型注释?
function hasAncestorData (node: VNode) {
const parentNode = node.parent
return isDef(parentNode) && (isDef(parentNode.data) || hasAncestorData(parentNode))
}
最佳答案
这实际上是一个Flow代码。可以看到some files开头的/* @flow */
注释启用工具的类型检查。它与 TypeScript 有点相似,但它们不是一回事。
快速浏览 the Vue.js github repo 的 src
文件夹显示他们确实使用 .js
作为他们的 JavaScript w/Flow 代码,例如 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) {
关于javascript - 为什么我在 Vue.js 源代码中看到 TypeScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798631/