ArchSummit全球架构师峰会门票9折倒计时中~ 了解详情
写点什么

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

  • 2012 年 11 月 08 日
  • 本文字数:1160 字

    阅读完需:约 4 分钟

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

2012 年 11 月 08 日 05:341997
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 122.6 次阅读, 收获喜欢 31 次。

关注

评论

发布
暂无评论
发现更多内容

nginx配置系列(四)请求限制

乌龟哥哥

5月月更

架构实战营-模块四-作业

michael

架构实战营 #架构实战营 「架构实战营」

在线Excel转XML工具

入门小站

工具

深入理解 Go 中的字符串

宇宙之一粟

字符串 Go 语言 5月月更

Continuous Integration 对 ABAP 技术栈来说意味着什么

Jerry Wang

持续集成 SAP abap 5月月更 持续优化

Approximate Graph Propagation

infoQ-LolitaAnn

图神经网络 近似算法 5月月更 社区发现

[Day32-04]-[二叉树]二叉树的最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

深度学习之解构卷积

AIWeker

人工智能 深度学习 卷积 convolution

千万级学生管理系统的考试试卷存储方案

高山觅流水

「架构实战营」

设计千万级学生管理系统的考试试卷存储方案

唐诗宋词

深度学习之解构基础网络结构

AIWeker

人工智能 深度学习 基础网络

C语言总结_字符串函数封装练习

DS小龙哥

5月月更

[Day33-01]-[二叉树] 路径总和

方勇(gopher)

LeetCode 二叉树 数据结构和算法

模块四:学生管理系统考试试卷存储方案

jiaoxn

「架构实战营」

MySQL三万字精华总结 + 面试100问吊打面试官绰绰有余

Java架构追梦

Java MySQL 程序员面试

Java 从一个 List 中删除重复的元素

HoneyMoose

【建议收藏】Redis知识干货汇总

利志分享

redis 面试

Git进阶系列 | 1. 创建完美的提交

俞凡

git 最佳实践

【51单片机】矩阵键盘

謓泽

5月月更 51单片机

千万级学生管理系统的考试试卷存储方案设计

大眼喵

「架构实战营」

DevOps系列之 —— DevOps概览(一)软件产业和交付模式发展趋势

若尘

DevOps 5月月更

[Day32-05]-[BST] BST最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

他们连夜跑路了,原因是我给数据开发的学弟学妹写了个实习生年终总结

🧸漫月柒七

SpringSecurity 表单登录

周杰伦本人

5月月更

redis性能调优--内存使用率过高

en

redis 内存

运营好公众号需要具备的能力/技能

源字节1号

软件开发

如何在网站上安装 WordPress

海拥(haiyong.site)

WordPress 5月月更

摸鱼即刻开始

程序员阿杜

Java 如何逆向遍历一个 List

HoneyMoose

Gitea 如何配置自定义页面

HoneyMoose

辛亥篇 「虛幣」起役《「內元宇宙」聯載》

因田木

類電子病歷

AI在游戏反外挂中的应用与实践

AI在游戏反外挂中的应用与实践

微软发布TypeScript用以改进JavaScript开发_JavaScript_Jeff Martin_InfoQ精选文章