写点什么

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

  • 2015-01-30
  • 本文字数:1087 字

    阅读完需:约 4 分钟

微软发布了 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2015-01-30 00:023112

评论

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

架构师训练营第2期大作业(二)

月下独酌

架构师训练营第2期

2 期架构师训练营 - 大作业(一)

云飞扬

架构师训练营第2期

大作业二-请用思维导图画出架构师训练营所有技术知识点

未来已来

Linux Lab 进阶: Qemu 模拟器 & Toolchain 工具链

贾献华

Linux Tool Linux Kenel qemu Toolchain

并发编程系列:并发编程基础

程序员架构进阶

架构 JVM 七日更 28天写作 2月春节不断更

产品训练营第四章作业(一)

Arnold

week11-homework

J

week11-conclusion

J

第十一周学习心得

cc

第6周课后练习-技术选型二

潘涛

架构师训练营 4 期

上古神器 sed 教程详解,小白也能看得懂

鞋子特大号

Linux sed

Ebean ORM框架介绍-1.增强注解

Barry的异想世界

Spring Boot jpa ORM Ebean

Android 完全符合规则但很头疼的Json映射成一个树结构且可折叠的列表?

第三女神程忆难

Java android kotlin 安卓

民办二本程序员阿里、百度、平安等五厂面经,5份offer(含真题)

Java 编程 面试

【LeetCode】可获得的最大点数

Albert

算法 LeetCode 2月春节不断更

做事情时,脑袋中一次只装一件事

熊斌

读书笔记 2月春节不断更

LeetCode题解:33. 搜索旋转排序数组,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

日记 2021年2月6日(周六)

Changing Lin

个人感悟 2月春节不断更

翻译:《实用的Python编程》01_01_Python

codists

Python

架构师训练营-架构大作业(一)

花果山

架构师训练营第2期

WiFi 空口抓包工具 --- OmniPeek

Elasticsearch 分页搜索以及 deep paging 性能问题

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

VoltDB让Kafka支持复杂数据流驱动的实时业务决策

VoltDB

数据库 kafka 分布式系统 VoltDB

从云数据迁移服务看MySQL大表抽取模式

华为云开发者联盟

MySQL JVM JDBC 数据迁移

2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python

梦想橡皮擦

Python python 爬虫 2月春节不断更 python入门

MyBatis专栏 - 一级缓存

小马哥

Java mybatis 七日更 2月春节不断更

机器学习笔记之:

Nydia

架构师训练营第2期 大作业 (一)

月下独酌

架构师训练营第2期

架构师训练营大作业(二)

花果山

架构师训练营第2期

中国移动工程师浅析:KubeEdge在国家工业互联网大数据中心的架构设计与应用

华为云开发者联盟

大数据 数据采集 工业智能体 边缘数据中心管理 EDCM

一文总结GaussDB通信原理知识

华为云开发者联盟

数据库 通信 框架 GaussDB 计算

TypeScript 1.4版本发布,增加了联合类型以及更多的ES6特性_JavaScript_David Iffland_InfoQ精选文章