如何评价 TypeScript?

关注者
952
被浏览
170693

30 个回答

有人说:“TypeScript 让 JavaScript 又变成了 Java,而我们不需要另一个 Java,所以我们不需要 TypeScript“。

这样说的人一定不知道,TypeScript 的类型系统中有:

  • Intersection Types
  • Union Types & Discriminated Unions (aka "Algebraic Data Types.")
  • String Literal Types
  • Polymorphic this Types
  • Index Types
  • Mapped Types
  • ...

这些吧。特别是 Generic Types 组合上 Mapped Types 描述能力爆表。

如果你的代码超过 1000 行,而且你不打算浪费时间,那么试试 TypeScript。当然前提是你是有经验的开发人员,如果是编程初学者,建议还是先从 JavaScript 开始。

ts用了1年半,首先因为学过java,c#,actionscript,本身从事js开发,惯用的ide是vs,所以完全平滑的使用;在原来公司的时候,在室内推广,带头重构了几个项目;
后来自己创业,用ts写node,网页,app,当然越用越顺手,深深觉得那些带有颜色看待M$的工具的人这次走宝了,ts是有shi以来最好的js开发工具(没有之一)。

------分割线,第一次在知乎码长字-----------

写js快10年了,我算是个技术宅,在一家大型互联网公司呆了6年(懒的跳),算是比较早的一批纯js开发人员吧。跟很多资深jser一样,随着工作的年限越长,对js技术了解也从懵懂到精通,网页开发脚本 -> es,dom,w3c -> 精通http协议什么的 -> 前端工程化,随着行业的兴旺,有幸从公司第一个纯jser到后来我们团队以js为第一语言的开发室最多有近30个js开发人员,所以js的代码规模是可想而知的,我们的产品也是前端密集型,用户有4亿+。

当前端开发人员熟悉了他的开发语言和开发工具,那么更多的是处理业务上的各种需求(从入门ajax开发,到使用跟公司业务相关的不停增长的各种WebAPI),从web开发的环境注定jser(前端工程师)是个永远折腾不断的岗位,什么时候公司产品大面积升级,就会有几十万行的代码重新写,这样的情况我大概经历了3次(每次大概会折腾半年,会有较多的加班),每一次大版本的重构都会应用一些新的技术框架,当然也会废弃一些老的做法。

4,5年前,公司的产品大面积移动化,刚好有个机会使用nodejs技术(原本作为纯前端,在一家技术分工很细的公司,服务端甚至不是我的工作范围,但是程序猿的生命可能在于不停折腾),当时虽然有一些反对声音,但是因为我速度快,把这个东西变成既定事实(主要是当时确实也没好的解决办法,公司应该给配的后端开发人员在计划时间内没到位,并且也不可能短期内解决问题,我太熟悉那套API了,三下五除二就把事情给解决了,也就是把传统的web spa大应用搬到移动端,因为环境不同,需要服务端多做点封装),由于这几年node确实火起来了,证明我当时没有做错。

当年反对node技术的就跟现在反对使用typescript一样,不了解实情是没有发言权的。一个js开发人员如果弄清楚es和dom的关系,那么应该清楚,js只是一门简单的嵌入式脚本语言,即是小小的开发工具,由于js设计的先天不足,造成的影响是十分深远的(web的发展造就了js,而不是js那些特性),js本身可以被替代,只要dom api的使用方法方法跟原来保持一致就行了,所以在这点上从js到使用ts开发的转变只需要几分钟,所有js代码在ts里都是可“运行”的。

typescript绝对是好东西,不过推广是有难度的:

1、TS是微软制造,最好的开发工具是VS,想想有些人就激动了(什么vi流,sublime流,macbook流,虽然也能写ts,但你无法跟他们说用vs写有多么好);

2、即使你告诉他们TS有多好,但是几十人的团队里总有一半以上的人不想学新的东西(当然我没有权利说不学新东西的人应该全部滚动,因为互联网打工的是大爷,想跳槽随便找工作);

3、JSer很多没有学习OOP开发经验(特别是从设计/页面重构转过来的);

4、很多人接触TS前根本没学过JS,经常有人问“使用TS如何写元素拖拽”这样的问题(那是DOM API好伐,不过你跟初学者很难解释明白);