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

标签 javascript typescript vue.js

我翻了下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 reposrc 文件夹显示他们确实使用 .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/

相关文章:

javascript - 如何从 JavaScript 中的字符串生成树

javascript - 有人可以帮助修复我的 Alertify JS 代码吗?

reactjs - 未捕获的 ReferenceError : global is not defined at Object. ./node_modules/fbjs/lib/setImmediate.js

javascript - 如何将链的 promise 转换为 Q 和 TypeScript 中的平面 promise

vue.js - VueJS Router - 使用子路由和 Vuetify 时如何停止多个事件路由?

javascript - 使用 HTML 和 Javascript 函数调用 PHP 变量

javascript - 如何阻止第三方域名重定向到我在 squarespace 中的网站?有没有相关的脚本?

typescript ES5 辅助方法重复

vue.js - Vue 指令访问 Vue 实例?

javascript - 如何使用 Vue 实例中的全局混合方法