JavaScript AngularJS 为何选择了 TypeScript,而不是 Coffee 呢?

lips · 2015年03月29日 · 最后由 nightire 回复于 2015年03月30日 · 7057 次阅读

Type 比 Coffee 强大些么?

你是 @mogodb 马甲么?你能停止 Troll 行为么?

http://zh.wikipedia.org/wiki/%E7%99%BD%E7%9B%AE

#1 楼 @Rei LOL,还真是 mogodb 那个家伙的风格。

首先,你的问题是挺有深度的。但是我觉得不是你现在的关注点。你了解了这个问题对你现在有帮助吗? 这种问题我不会,不知道论坛有多少人清楚。 而且这种东西有技术趋势和各方面的因素在里面,比如架构师个人的技术爱好,擅长的东西不同,那么选择也就不同。 综上:just do it

因为 dart 死了

#5 楼 @huobazi 只是不会直接在浏览器支持 dart,还没死吧

coffee 是语法糖,它再怎么变花样最终生成的还是 Javascript,无法超出一点点。

Typescript 是 Javascript 的超集,Angular2 用它主要是为了扩展的 annotation,原本 Angular2 想另外搞一套超集,但是众怒难平…后来和微软协作再加上 ember 的 yehuda 做出的一些贡献,最终还是决定使用 Typescript。这里面有一个细节,yehuda 本人就是 tc39 委员之一,微软也有重要人物,他们都会致力于让 annotation 成为 es next 标准的特性之一,既然如此,Angular2 想要的目的达到了,自然不用另起炉灶。

这些背景对你现在而言重要么?

#7 楼 @nightire yehuda 好像不是 tc39 的正式成员,github tc39 没看到他

#8 楼 @lips http://tc39wiki.calculist.org/about/people/

Actually, you can search on Google, there're lots of references about members of tc39.

#7 楼 @nightire angular 2 没有什么众怒难平。是 v8 的组比较大,意见不统一: 一票人支持改良 js(后来有了 atscript,atscript= typescript+annotation,typescript 后来决定加入 annotation,于是那票人觉得 atscript 没存在的必要了,和 ts 一起干了); 另外一票人 (大牛多一些,所以想法更激进吧~~)支持革了 js 的命,于是有了 dart,从设计上都是在解决 js 的痛点 (但很多人说它长得像 java,其实它更像 c#,最新的 dart 1.9 的 await 的设计者,就是以前就在 MS 设计 c# linq 的那位),但激进的结果是:和 js 互操作性太差,而 js 的库又太庞大,导致 dart 不被接受 (想想 scala 要替代 java 有多艰难吧)。

再回 lz 的疑问: coffee 认为 js 的语法不够漂亮优雅,ts 和 dart 则觉得 js 问题不是语法上的,所以可以说两者对 js 的看法是有差异的,这就是 angular 选择 ts 的原因,而不选 dart 的原因是 angularJS 属于改良派,当然也有 angularDart,只是几乎没怎么见有人用。

从 dart 不再打算内置 vm 进 chrome,看样子是改良派胜利了 2333

#1 楼 @Rei 如果他发帖内容像 @mogodb, 语言风格像 @mogodb, troll 的方式像 @mogodb,那他就是 @mogodb, 直接 ban 就好了。非常的 OO,非常的 Ruby way。

12 楼 已删除

#10 楼 @hooluupog 我说的众怒难平倒是和这个没关系,可以看一下今年的几个大会,许多人都提到这些事情。去年 ng 说要搞 atscript 的时候就有因为 typescript 没有 annotation 的原因,Igor 在 presentation 里多次画了那个超集的圈圈图来解释这个问题,然而那时候社区就是一片抱怨,大家都说与其这样为什么不试着改良 typescript(或其他)?后来具体怎么演进的我也不太清楚,也没心思去弄清楚,不过总的来说这就像一个契机,大家协作了,typescript 进化了,annotation 提交标准了,all happy。

dart 其实是另外一回事,语言之争与语言内部的改进措施之争并非一个层面上的讨论。LZ 的问题其实远没到这个地步。

#13 楼 @lips 关我什么事?那又不是我维护的。再说了你看这个成员列表其实没什么意义,jspm 的作者 guy 就不在 jspm 的组织成员列表里。我在 babel 的成员列表里,但是我没有为 babel core 贡献过代码(除了 issues),只是因为我写的插件被 babel 收录了而已,这能证明我是 core team member 吗?你看到的只不过是 github org 的 member list,并不是 tc39 的官方列表。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号