TypeScript背后的动机是什么?


21

我们有了JavaScript,然后有了Flash,然后有了Silverlight,然后HTML5拥有了它们。

那么TypeScript背后的动机是什么?TypeScript将解决哪些问题,我们将获得哪些改进?

http://www.typescriptlang.org/


15
您为什么认为HTML5“拥有” JavaScript?
Bergi 2012年

1
从某种意义上说,每个人都必须同意某些事情才能找到共同点=>技术与发展停滞不前。
Gero 2012年

3
你为什么提到达特?
罗伯特·哈维

Dart,TypeScript或Coffeescript可以编译为JavaScript。Dart也很新。
Gero 2012年

看看Nicholas C. Zakas 撰写的
Czarek Tomczak

Answers:


35

在我看来,它是一种静态类型的,基于类的语言,可以编译为JavaScript。这是一个好主意,其他人也有。

对于使用静态类型的,基于类的语言和JavaScript进行开发的任何人,优点都应该显而易见:

  • 首先是编译器。 在开发人员能够进行Web开发之前,能够在部署之前检查由错别字或粗心大意引起的明显正确性问题是理所当然的,直到他们必须进行Web开发,然后突然从他们的脚下将其淘汰。浏览器旨在通过适当的测试和调试功能来使浏览体验愉悦,并且标准解决方案JSLint不能替代真正的编译器,因为它错过了一些明显的正确性问题,并在其中混入了许多样式检查器的抱怨。及其报告。拥有一个真正的编译器是一个巨大的进步。
  • 沿着类似的路线,一个类型系统。类型系统通过使代码更易于阅读(例如,仅通过查看参数列表即可清楚地知道传递给函数的内容以及它可以做什么)来改进代码,并在编译时强制执行一定程度的正确性时间。(如果您期望使用特定的对象类型,则传递整数是错误的。JavaScript将允许您执行此操作,然后在尝试运行它时将其炸毁;具有类型系统的编译器将捕获该错误并报告错误您。)

因此,正如我们所看到的,基本思想是一个很好的思想。话虽如此,我对语言本身一无所知,因为我没有使用它的经验。但是我使用了Smart(链接到上面),发现它是用于Web开发的非常强大和有用的工具。


7
它更像是JavaScript的超集,而不是编译为它的新语言。
丹尼尔·利特尔

2
是的,强类型可简化程序员的工作。
叶德文

13
TypeScript是静态类型的,不是强类型的。
Fenton

15

据我所知,使用TypeScript有很多充分的理由。正如梅森·惠勒(Mason Wheeler)所说,首先是编译器。或更确切地说,编译器进行的所有检查。JSLint和其他工具很有用,但是遗漏了一些问题,有时是完全错误的。我当然欢迎这种“创新”。

然后是一个实型系统,可以提高可读性并强制执行正确的类型。毕竟,这提高了开发速度。

对我来说,很棒的事情之一就是工具支持。这可能是类型系统的副作用,但是效果很好。确实有必要,因为当前的JavaScript工具支持已无用。

TypeScript尝试扩展JavaScript。编译器生成非常好的JavaScript。除此之外,它还遵循ECMAScript 6建议。(例如,箭头函数语法参数默认值模块等。

它使使用模块和类更加容易。使用JavaScript中的类和模块实际上是可能的,而且很普遍,但是它需要一些样板代码。而且,阅读起来并不容易。TypeScript允许像Java或C#一样编写类,接口和模块语句,如果您问我的话,这要容易得多。

但毕竟,它仍然只是JavaScript。无需学习新的语言或语法。它唯一添加的是可选的类型系统(很棒而过期)。

然后是“ definitions库”,这意味着我可以使用我的所有JavaScript库,而无需重写甚至不修补它们。但是,我现在有其他类型系统。

我一定会尝试的!

最后一件事,HTML5和TypeScript之间没有竞争。但这是另一个故事。


5

我们有了JavaScript,然后有了Flash,然后有了Silverlight,然后HTML5拥有了它们。

这根本不是真的。Html5不拥有它们,它引入了简化多媒体使用的新标记,并探索了新时代浏览器的优势(例如在渲染html时使用硬件加速)。

那么TypeScript背后的动机是什么?

使用动机可能是出于动机。TypeScript的所有功能,例如:静态检查,基于符号的导航,语句完成和代码重构,都是考虑使用它的强烈理由。

此外,它提供了类,模块和接口来帮助您构建健壮的组件。这些功能在开发时就可用于高信任度的应用程序开发,但已编译为简单的JavaScript。


HTML 5不是硬件加速的先决条件。大多数浏览器都在使用或不使用HTML5标记的情况下进行此操作
Neil N

我的陈述表明,硬件加速是浏览器未提供html5的功能。
尤苏波夫

3

它可能被视为管理javascript开发的工具,而不是被编译为JS的全新语言。它不想像Dart这样的服务器端开发语言,也不想像CoffeeScript这样的语法。它不想采用一种流行的语言(它是核心库)并将其编译为GWT或script#之类的JS。TypeScript甚至遵循为下一个JS版本提议的相同“类”语法。

我认为今天的大多数Web开发都是使用真正的javascript完成的,仅在客户端。诸如Dart,GWT之类的语言或框架不适合于此。如果您去喝咖啡脚本,就会出现新的语法。而且您必须了解coffeescript和JS。虽然TypeScript只是添加了一些附加的面向类型的功能,这些功能已融合到JS中,从而使开发人员免于类型特定的错误(这是JS错误的很大一部分),并为开发工具提供了有关开发人员意图的更多信息。

这种方法并不新鲜。转到“静态输入”部分

本文解决了您的查询-http : //www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/


0

我认为,这是将共享的,不可靠的废话(javascript)转换成可实际用于大型项目的专有语言的一种努力。

应该将其与GWT进行比较,后者具有类似的目标,但通过使javascript不属于该语言而采用了一种更简洁的方法。以及Java小程序或Flash,它们采用非常干净的方法来定义独立于浏览器的完整运行时环境。

您的意见可能会有所不同,但我认为它注定要失败,只要它取决于本机提供(各种,不一致的)JavaScript实现和DOM模型的浏览器。


5
首先,它不是专有的,它已经是一个开放标准。其次,它比GWT / ScriptSharp更像Dart(尽管类似)。
丹尼尔·利特尔

1
可能没有办法赢得胜利-如果Microsoft不控制它,它将成为具有许多变体的另一种混蛋语言,并且它仍然依赖于javascript和DOM的不断变化
ddyer 2012年

1
您听起来好像有些人可能对Flash和/或Java技能有些不满,而当前流行的HTML5 / JS堆栈已使它们变得不那么重要了。
格雷厄姆(Graham)

3
-1所以您不喜欢JavaScript。基本上,这就是您的陈述。
布鲁诺·谢珀2012年

2
公平,由于它是打字稿的基础,我想我认为打字稿的基础很差。这不一定致命,但这是一个充满伤害的世界。
ddyer 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.