摘自:https://www.zhihu.com/question/310485097
    1. 通常需要基于 vue-class-component 来用基于 class 的组件书写方式,虽然对于默认的对象书写方式有类型推导支持,但里面的实现绕了很多弯。问题的本质其实很简单:因为当初 API 的设计根本就没有考虑类型系统。
    2. Vue 五年半以前刚开始写的时候,JS 根本没有类型系统,尤自己当时也不用带类型的语言,所以 Vue 的组件本质上就是一个 “包含了描述组件选项的对象”。
    3. Vue 2 一开始内部实现就有类型系统,但是没想到 Flow 烂尾了,而 TS 整个生态越做越好。这个属于就是押错宝了。
    4. 隔了一层模版语法 + 编译,似乎确实存在 “断层”,但其实里面没你想的差那么远。Vue 的模版是编译成 virtual dom 渲染函数的,生成的 js 跟 React 的渲染函数一样可以类型推导,而模版跟生成的 js 之间是完整的逻辑映射,所以这里其实主要是需要做一些工具链上的衔接,把对生成的 js 分析出来的 intellisense 反馈到 IDE 里的模版上。技术上是完全可行的。