作为改进 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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论