微软发布 TypeScript 用以改进 JavaScript 开发

  • Jeff Martin
  • 臧秀涛

2012 年 11 月 8 日

话题:JavaScript语言 & 开发

作为改进 JavaScript 应用程序开发的举措之一,微软近日发布了 TypeScript。这一新语言是 JavaScript 规范的超集,添加了类型检查和静态代码分析,同时生成原生 JavaScript。这些特性意在使开发者能够受益于类型检查带来的便利,从而更轻松地扩展 JavaScript 以支持更大规模的应用程序开发。现有的 JavaScript 代码在 TypeScript 中可以直接使用,而且因为 TypeScript 生成的是纯 JavaScript 代码,因此可以在现有支持 JavaScript 的平台上运行。

开发者使用声明文件来向已有的 JavaScript 库提供编译时检查和智能感知等优点。声明文件“是描述现有 JavaScript 中接口的少量类型信息”。已经有大量的项目致力于改进或替换 JavaScript,其中包括CoffeeScript和 Google 的Dart,现在 TypeScript 也进入了这一领域:

CoffeeScript 宣称“... 尝试以简单的方式暴露出 JavaScript 优秀的部分”。类似 TypeScript,CoffeeScript 也将代码编译为 JavaScript,力求成为一种更清晰的动态类型语言。因此 CoffeeScript 不支持静态分析,当然它设计时也没打算支持。

Google 的 Dart 也是动态类型的,但是提供了可选的静态类型注释。按照 Google 的说法,“Dart 的目标是与 JavaScript 类似,但 更快、更规范、对大规模程序的可伸缩性更好”。Dart 代码既可以编译为 JavaScript,也可以直接运行在 Dart 虚拟机上。

TypeScript 基于 Apache 2.0 开源许可证开放,现在可以从CodePlex下载源代码。TypeScript 编译器和 Visual Studio 兼容插件可以从微软的网站下载。其中包含的 Visual Studio 插件支持 Visual Studio Express 2012 for Web。微软还为 Sublime Text、Emacs 和 Vim 等编辑器发布了示例语法文件。

Mono 的 Miguel de Icaza指出目前 Emacs 插件尚无法与 Visual Studio 提供的特性相比,而且智能感知特性的缺乏让人“不愿意使用”。结果是目前该语言对 Windows 开发环境支持的更好,尽管没什么可以阻止这种情况在未来有所改变。

关于语言本身的总体设计,de Icaza 的看法整体上是积极的。他指出,TypeScript 与 Dart 有一点区别:TypeScript 只编译为 JavaScript,而 Dart 可以生成面向其原生虚拟机的代码,这就提供了利用“类型信息来优化生成代码质量”的能力。由此可以看出两种语言设计目标上的一个区别:TypeScript 可以在任何支持 JavaScript 的地方运行,而要对代码做进一步优化的话,则需要(不太流行的)Dart 虚拟机 。

关于 TypeScript 语言及其演示的更多信息,可以观看 Anders Hejlsberg 在微软的 Channel 9 上的介绍

查看英文原文TypeScript Released to Improve JavaScript Development


感谢王瑜珩对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

JavaScript语言 & 开发