开源项目 MS 出了个 typescript

huobazi · 2012年10月02日 · 最后由 sunfmin 回复于 2013年03月14日 · 8227 次阅读

没有浏览器的直接支持,还是得像 cofeescript 那样编译成 js 代码才能用,那种感觉怪怪的

汇编级大神,安德森同志操刀必是精品,除非他老糊涂...我一直以为《骇客帝国》里面的安德森是向这位前辈致敬...

搞 ASP 的同志可能用的着

感觉这个有搞头,和 coffee 之类的相比这个学习成本低,估计很多人会去用

#3 楼 @oth 前阶段刚看了《Borland 传奇》~~~

#6 楼 @franky_xhl Borland 的 ABCD 时代象武侠小说啊,不过近两年都流行到 乔布斯 了估计 ABCD 没多少年轻人知道了

Ycombinator上也在讨论,我看了一遍Channel9上大神安德森上的介绍,发现 TypeScript 强调 Type Safe,Interface 以及自动完成,配合 VS.NET 真的不错,不过貌似这些都和 Ruby on Rails 的 Duck Typing,最小 api,无自动完成 vim/emacs/sublime code typing 的精神背道而驰啊?

比较纠结,不知道到底现在应该学用 CoffeeScrip 还是这个 TypeScript ……

#5 楼 @jjym #8 楼 @ericguo

我不明白你们为什么拿这个跟 CoffeeScript 比较? CoffeeScript == JavaScript + 一个下午时间的语法学习。 所以,你们是在拿 TypeScript 跟 JavaScript 比较嘛?另外学了 TypeScript,JavaScript 就可以不用学了嘛?

#9 楼 @lgn21st TypeScript 也和 CoffeeScript 一样,最终是编译成 JavaScript 的,JavaScript 是一门基于 prototype 提供面向对象特性的语言,TypeScript 提供了一种完全 CSharp 化的面向对象机制,但是最后又能编译为 JavaScrip,还是挺有意思的。

CoffeeScript 我不熟,还在学习,学习成本肯定比 TypeScript 高,不过作为 Rails 程序员,我们的口号不就是,不怕难,就怕代码行数多,别人看得懂么…

#10 楼 @ericguo 我明白你的意思,我只是不明白的是把 CoffeeScript 跟 TypeScript 比对,这两个东西应该不是一个层面的东西,不太有可比性。

类比 Haml/Slim 和 ERB 的关系,如果对 ERB 很熟悉,那么你在写每一行 Haml 的时候,你的脑子里面已经知道这行代码被翻译成 ERB 或者最终输出的 HTML 会是什么样子。我一直认为 Haml / CoffeeScript / Sass / Scss / Less 就是这样一种东西:如果你很熟悉 HTML 或者 JavaScript 或者他们最终生成的那个东西,那么你只需要了解编译器的代码转换规则,然后就可以开始干活了,因为你知道你写的每一行代码会被编译器编译出来是什么。这样的东西学习成本都不高,大概一个下午足够了。

我在想你说你 CoffeeScript 不熟,还在学习,但是学习成本肯定比 TypeScript 高,是因为你每写一行 CoffeeScript,都不知道最终产生的 JavaScript 代码长什么样子么?还是看不懂最终生成的 JavaScript 代码?

TypeScript 则完全不是跟 CoffeeScript 等同的东西,他的目的是解决 JavaScript 在大型项目中的代码组织,提供了 IDE 友好的 OO 机制,已达到能舒舒服服的在 Visual Studio 里面做前端开发的目的。当我第一次看到这个的时候,我脑子里面想的是另外一个东西,M$ 从来没有靠直接销售 C# 这样的语言赚钱,语言都是免费的,但是他们的 IDE 很赚钱。如果前端开发人员能通过某种方式,用某种语言在 M$的 IDE 里面开发,那么他们就又可以赚一票了。

#11 楼 @lgn21st 这说的不对啊,这个用编辑器当然也可以。也有很多人用 mono develop 或 sharp develop 这类免费 ide。在这些情况下还有人愿意买 VS,就证明 VS 值得这个价。

TypeScript 一是静态类型,容易 debug。二相比 coffee 你很清楚生成的是怎样的 js 代码(三,对 js 不是很感冒,可能懒得学 coffee)。就算没 ide 支持我也可能会用。学习成本低肯定是个大优势。

#6 楼 @franky_xhl Borland 传奇 我读过,我想要看清未来,必须了解历史。现在很少有人再提到 Com 了^_^。

#10 楼 @ericguo CoffeeScript 学习成本很低,不信你学学看。(我基本上没学过,就看了几眼例子)http://coffeescript.org/

#11 楼 @lgn21st 我觉得 CoffeeScript 和 TypeScript 是一个层面的, 因为他们的初衷是一样的,只是他们的手段不同, 他们的初衷是都是,用更优秀的新语法 替代 不够优秀的 JS 语法。 不同的是 CoffeeScript 依然是动态的解释型语言,而 TypeScript 是静态的编译型语言。 静态语言的优点之一就是 可以配合强大的 IDE 使用。 动态语言的优点之一就是 可以让代码更少。

MS 的开发文化,是以 IDE 为核心,这点我也很喜欢。 而且我觉得,目前,静态语言 和 IDE 的结合,可以把双方的优点发挥到极致。 由此让我想起了 全真剑法 和 玉女剑法 的 <<双剑合璧>>

唉,感叹 Ruby 如此强大,却找不到一个等同的工具,使其发挥至极致。 变化末测,难以驾驭。 难道这就是动态语言的宿命, 注定要孤独一世吗?

#11 楼 @lgn21st 没人说必须用 VS 才能舒服地用 TypeScript,TypeScript 的目标不仅仅是方便智能提示(而且这点也不是 VS 的专利),现在 IDE 都厉害得去了,还有静态检查等等。

另外,谁说 VS 很赚钱的?什么时候开始微软设法从开发工具赚钱了?微软会为了多卖几套 VS 授权去搞一门语言出来吗?搞一门语言出来的成本可比 VS 大多了。开发工具这种几百几千美金的都是及其便宜的东西,人力和时间都要贵多了。你可以说这是微软为了占领某某市场也罢,说是为了卖 VS 就太水了……

#12 楼 @jjym 我觉得,如果静态语言如果不用 IDE,那么就失去了一半以上的优势。 而且我觉得 TypeScript 虽然是静态的,但是无法发挥静态语言 debug 的优势。因为 JS 的 Debug 最佳环境是浏览器,难道要浏览器把 JS 再转成 TypeScript?IE 也许可以,但是其他浏览器很难支持,也不值得这么做。 我非常认同 VS 的价值,但是如果有人低估 CoffeeScript 的价值,我会感觉很不爽。

#15 楼 @ery 杀鸡焉用牛刀,如果是一个非 js 程序员,用 TS 能解决的至少我来说不会去学 coffee,而且 TS 能让我对代码更有掌控能力。而且 js 我经常犯得错误就是类型不对(我认为大多数人都是,要不为啥有 TypeScript),个人认为静态语言最大的优势(对 TypeScript 来说)是编译期检查

#16 楼 @jjym 我想问个问题,你打算在那个框架下用 TS?ASP 还是 Rails?还是其他? 我觉得 ASP 最好用 TS,Rails 中最好用 CoffeeScript。 另外,我也认为 静态语言的优势是编译期检查, 但是只能说是,最大的优势之一,另外还有两点, 一 IDE 中的重构(改名字非常容易,又快,又不会错)。 二 IDE 中的智能提示,比如函数列表,可用模块列表等。

#17 楼 @ery 这没什么关系吧,编译成 js 后丢到 assets 下就是。 这些是优点,但是我认为把 IDE 作为一个语言的优点有些不妥,至少我不会因为 IDE 去学一门语言

#18 楼 @jjym 请问你前台的 JS 代码量很大吗?有没有考虑过 JS 的单元测试框架?

我觉得,在 Ruby 的环境下,使用静态语言,还不用 IDE,总感觉怪怪的。

#11 楼 @lgn21st 我也想到了,TypeScript 其实还是为 IDE 服务的,自动完成(静态强类型)一直是.NET 和 Java 的特点,从这个角度看 Rails 程序员应该还是会继续使用 CoffeeScript 的,毕竟选择了 Ruby 就是选择了 Duck Typing 和动态类型。

不过你的另外一个观点我倒是不赞成,过去有一个说法,一个优秀的 C 语言程序员能够想象出他写的 C 代码最终会变成什么样的汇编语句,和你说的

在写每一行 Haml 的时候,你的脑子里面已经知道这行代码被翻译成 ERB 或者最终输出的 HTML 会是什么样子。

其实是一个意思,但是我倒是认为,如无必要,勿加抽象层,或者说:要加抽象层,那么新加的抽象层必须完全能够使被抽象的那个东西对用户透明。所以对于 Haml 我是不会用的,我不怕多打字,但怕在写 Haml 的时候还要不停地想 HTML 长啥样子…… 对于 Scss 我肯定会用,因为写的时候不需要想 css 长啥样了,很好用。但是对于 CoffeeScript 或者说 TypeScript,我只能说比较纠结……

#16 楼 @jjym 我和你一样,也是离开了自动完成和类型检查貌似就不会写代码了,不过现在想想其实太依赖这些 IDE 功能也不是好事,有些东西还是直接背出比较省事,当然前提是这个东西不会老变(这里吐槽一下微软每隔几年就变 API 变框架的恶心行径……)

@ery 你回帖速度还是真快,动态静态肯定是各有千秋,我最好是用动态语言,有静态检查和自动完成,然后还有 Ruby 这样的元编程能力,然后最好还不用我担心运行速度,然后还是完全免费的……

当然这个有点贪心,其实免费对我来说最重要,所以我肯定还是会继续 Rails 的,至于 CoffeeScript,等待有人给我更加充分的理由使用它吧……

#14 楼 @jeffz 突然发现老赵也来 Ruby-China 了,我在博客园可没少看你的文章啊!你是 javascript 大神,要不你说说 TypeScript 和 CoffeeScript 相比,除了静态检查(以及随后的自动完成),还有啥优势?我知道语言比较比较无聊,不过有利于初学者嘛…还是你建议直接上 Javascript,不要再引入一层抽象层了?

@ericguo ruby 没问题,js 的 bug 我要找半天。最常见的就是 undifine,也不报错,所以说编译期检查可能有助 debug

@jeffz 我想头像怎么有些眼熟..膜拜

#21 楼 @ericguo 可以试试 slim,非常简洁,可读性也比 html 要好

#12 楼 @jjym 我大概除了写 Java 的时候需要 Eclipse,其他所有的日常开发工作都不依赖 IDE,所以也就没有 IDE 情结吧。

#14 楼 @jeffz 原来是这样,受教了,是我主观臆断了。M$ 对 JS 生态环境贡献一个新的语种,一定会对整个生态环境带来影响,是好事情,应该欢迎。

#21 楼 @ericguo 我觉得这里是我们两个对待 CoffeeScript 的观点不同,我呢,是必须要弄明白引擎盖子下面发生的事情,如果用了 CoffeeScript,就一定要弄明白生成的目标代码是什么,遇到问题也是去目标代码中查找,然后在回过头来修改 CoffeeScript,起初大脑中会有个 transition 的过程,会有点不适应,但是好像很快就会过了这个阶段,通常不会超过一周,现在我看着 JavaScript 去调整 CoffeeScript 已经觉得非常自然了。

#26 楼 @lgn21st 我一直以为你不会 java...... #14 楼 @jeffz k,老赵居然也在这里,MS 的东西你比较专家,给个评价如何?

那天看了看 Type 的语法,还是跟 JS 老样子,单从语法层面来说,我觉得在 JS 上加一层编译是不错的选择,可以提高码字的效率以及提高排错的效率。另外 Coffee 提供的语法糖也是很好的东西。

估计都拼不过 Dart

@jeffz 我勒个去,老赵 10 月 6 日注册……专门来回复此话题的?

第一反应就是又一个 ActionScript 的蛋疼轮回...

严重看好这个,编译无价啊!

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