为了表明我充分意识到了TS的好处,以及不枉费这两天学习TS的时间,我记录一下TS带来的好处。
- 静态类型支持。
- 代码提示。
- 思维变化。Model & interface.
- 更好更快的使用lib,比如axios。减少查api doc.
- 非标准。与ES可能打架。但是Vue 3.x是用Typescript写的,所以从这点来说,TS的生命力是有保证的。
- 社区支持。不是每个npm包都有很好的类型声明。
- 快速发展和变化。2个月的发布周期。时不时有新东西要学或周边升级。
- 编辑器支持。由于变化快,编辑器的支持可能跟不上。
- Babel的支持。Babel 7。Babel和TS之间的配合未验证。
- ESLint的支持。TSLint并入ESLint了。目前还没合并完毕。
- Prettier。支持。但未验证效果。
- TS是JS的超集,背负了JS的历史包袱,所以做不到类型的soundness。
- sourcemap在chrome devtools的表现?未验证。
以上未验证的部分是因为我已经决定暂时不使用TS,所以没有继续验证。
- 官方没有提供有力支持。虽然vue cli 3和vue-class-component都支持TS,但都不是主流。
- Vuex的TS支持很繁琐,并且用到的decorator是stage 1的方案。Vuex没有官方的TS融合方案。
- 使用起来很繁琐是指为了支持类型,需要引入Vue和Vuex相关的很多类型,自己定义的type也需要在各个地方引用。总体来说,繁琐程度超过了收益。
- 由于使用的是非标准的特性,项目开始的时候是好的,可能项目维护和升级的时候就傻眼了。
- 由于Vue 3.x将使用TS开发(预计2019末发布),并承诺改善自身的类型系统,可见Vue 3.x会有一套新的TS融合方案。现在采用TS的项目很可能又马上面临重大技术依赖的过时。
TS是很不错的,但是根据投资回报比,目前不适合在Vue中采用TS。等到Vue 3.x在2019年末或2020年初发布后,再考虑在新项目中使用TS。