BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

TypeScript 1.4版本发布,增加了联合类型以及更多的ES6特性

| 作者 David Iffland 关注 4 他的粉丝 ,译者 王沛 关注 12 他的粉丝 发布于 2015年1月31日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

微软发布了TypeScript 1.4版本,即他们这个JavaScript超集的最新版本。除了支持新的TypeScript特性比如联合类型之外,他们还提供了编译到ECMAScript 6的目标模式。

一个期望值很高的特性就是联合类型。通常在JavaScript代码中,会在运行时动态检查函数参数来决定其行为。TypeScript的联合类型为这些场景提供了更好的类型检查机制。下面是官方声明中提供的例子:

function f(x: number | number[]) {
  if (typeof x === "number") {
    return x + 10;
  }
  else {
    // return sum of numbers
  }
}

其中参数x就是一个联合类型,可以为number或者number数组。代码中能够使用typeof来检查类型,从而根据不同结果执行不同的操作。Facebook的JavaScript静态类型检查框架Flow也提供了类似的类型检查机制。

DefinitelyTyped项目的贡献者John Reilly比较并展示了angular-route.d.ts在TypeScript1.4前后的区别,他说:

虽然在TypeScript 1.4之前能够重载函数,但是并不能重载接口成员。这意味着要为这些属性建模就必须找到适合所有场景的最佳通用类型。这也就总意味着没有类型。这种方案虽然可行但无法为消费代码(Consuming Code)带来很好的类型安全性。

1.4版本也支持了ES6的let和const特性,不过它们只能在编译成ES6目标时使用。微软希望在未来的更新中以ES5为编译目标时也能支持此特性。能够编译成ES5的一个新ES6特性是基础字符串模板,它使用回勾号(键盘左上角数字1左边按键的字符)来定义这样的模板:

var width = 640;
var height = 480;

var areaDisplay = `The pixel count is ${width * height}`;

不过标签模板字符串(Tagged Template String)只有在以ES6为编译目标时才能被支持。

微软已经谈到TypeScript 2.0的目标是“完全支持ECMAScript 6标准”。版本1.4是一个重要的更新,但是后面还有很多事情要做。根据Kangax ES6兼容表,TypeScript8%的兼容比例在竞争中明显落后。不过,TypeScript的目标不仅仅是ES6兼容性,它并不是像6to5那样做一个单纯的ES6转换器而是另有其它目的。

展望今后,TypeScript的路线图表明下个版本(1.5)将会支持for..of和解构(destructuring)。

TypeScript 1.4目前已经可以在 Visual Studio 2015 CTP5, Visual Studio 2013, NPM, 以及TypeScript Playground中使用。

查看英文原文:TypeScript 1.4 Released, Adds Union Types, More ES6 Features


感谢郭蕾对本文的审校。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT