你为什么不使用 TypeScript?

TypeScript (含 TS language server)。 可以从以下几点回答: 如果你想用,但是没有用,是什么原因阻止了你使用?如果你不想…
关注者
1,456
被浏览
1,731,243
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

更新:

最近根据react-boilerplate这个著名的 React 模板提供的最佳实践写了一个 几乎没有 any 类型的TS 版的小 demo

  • redux-saga
  • redux
  • react-navigation
  • immutable.js

尤其是 immutable.js + Typescript 的坑很多,搜遍github也没有太优雅的解决方案,我通过不断搜集资料和试错的情况下跑通了,如果大家碰到类似的问题可以去本demo参考一下


----分割线----

去年开始用Typescript,自己用跟听人说怎么用差距还是很大。

  1. 前端圈子里有这么一个流行语『自从用了Typescript之后,再也不想用JavaScript了』,


这句话是真的...就是传说中的一口气撸上百行不出错,只要打出『.』后面马上一堆提示代码,注释都可以少一大半,毕竟『类型就是最好的注释』,工程质量和工作效率是爆表式提升,巨硬大法好。





2. 还流行着另一句话,『只要你用过ES6,Typescript可以几乎无门槛接入』


我特么差点就信了,跟着文档撸了几百行Demo级别代码,确实感觉无缝接入,然而,你写东西得依赖框架吧?这个时候才是大坑,注意TS没坑,框架没坑,TS+框架会有很多坑

你必须学习框架+全家桶的各种暴露出来的d.ts(还好用的是React,生态良好,生态差的在下一条出现),重新配置webpack,并解决各种冲突,比如在webpack中设置了src为@方便我们引入文件,然而Typescript不识别会报错,你需要解决这种冲突,此类冲突很多,还有如果TS彻底替代babel会出问题,比如不能享受babel-plugin-import这种按需引入的Babel插件了,最好的方法是TS+Babel,这又是额外的复杂度,再比如prettier美化插件,虽然支持了TS但是会出现各种各样的花式美化,还有各种各样的坑爹的地方就不提了,需要有一段很恶心的过程去一点点踩坑,我对那段的记忆反正是痛苦的,但是醉心于TS第一条提到的优点,还是把这shi吃了。。。而且还时不时踩到shi。。


对应题主的问题,我当初有放弃的想法,就是因为TS与框架的结合方面会出现大量细枝末节的问题,这是阻止人们使用的一大障碍


3. 还流行着另一句话,『Typescript可以在任何场景代替JS』


Typescript作为JS超集自然可以无缝碾压JS,然而前提是。。。


你得有一个对TS支持良好的框架,如果是早些时候的Vue就呵呵了,记得有一次用vue强上ts,最后头破血流,现在vue2.5的支持勉强已经够看了(Vue本身支持不错,坑的是周边那些东西,所以说Vue的生态一般般),加上本身项目就不大,就是贪图一点类型检测和代码提示(当支持辣鸡的时候其实是享受不到的,反而会坑),得不偿失,小几千行代码的项目,如果没有长期维护的需要,强上TS属于多此一举,老老实实用js撸你的模板,TS并不是银弹。。。


也对应题主的问题,当你主要使用的框架对TS支持辣鸡的时候,你会不想使用,据我所知了解,Vue 2.5之前在业界的Typescript实践少得可怜,github上也是ts项目少得可怜(对比对象是React,Angular更不用说了)


4. TS到底适合什么场景


我个人认为

1. 中大型项目,需要长期维护的项目,底层库or框架

2. 上一条的前提是,项目主要依赖的类库对TS支持良好,最好有业界的先行案例


所以用一些冷门框架或者小项目的时候我是不用TS的,TS没问题,框架也没问题,框架+TS会有很多问题。