写点什么

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:023561

评论

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

栈简介、手撸顺序栈、手撸链栈和栈的应用

C++后台开发

数据结构 后端开发 linux开发 C++开发

【PCB干货】是开窗还是盖油?想搞懂过孔工艺,看这篇就够了!

华秋PCB

PCB PCB设计 过孔 PCB工艺

涨薪跳槽利器!清华大佬总结的Java核心突击讲,一应俱全

钟奕礼

Java java程序员 java面试 java编程

中国互联网大会天翼云展区大揭秘!

天翼云开发者社区

“元宇宙家园”国脉大厦展馆上线 天翼云实时云渲染筑基未来数字世界

天翼云开发者社区

腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

钟奕礼

Java 程序员 java面试 java编程

Docker搭建harbor私有镜像仓库(命令行模式)

A-刘晨阳

Docker Linux 运维 11月月更

PID和TID的区别

源字节1号

APP开发 低代码开发 小程序开发 网站开发

java面试之经典算法篇

钟奕礼

Java java面试 java编程 程序员 java

智能时代如何打通商业市场?华为的内外兼修

这不科技

【iOS逆向与安全】frida-trace命令大全

小陈

iOS逆向 ios安全 Frida ios 开发

LeetCode题解:938. 二叉搜索树的范围和,递归,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

从 NASL 说开:低代码编程语言能饭否

石臻臻的杂货铺

11月月更

Linux中基于Docker搭建harbor私有镜像仓库(超级详细)

A-刘晨阳

Docker Linux 运维 Harbor 11月月更

瓴羊Quick BI在线电子表格,数据分析人员高效工作“神器”

巷子

鲲鹏开发者创享日杭州站:你想知道的所有精彩都在这里了

极客天地

Serverless 架构下的 AI 应用开发

阿里巴巴云原生

阿里云 Serverless 云原生

Linux中安装/部署docker-compose

A-刘晨阳

Docker Linux 运维 Docker-compose 11月月更

南京等保测评公司有哪些?一共有几家?

行云管家

等保测评 等保备案 等保整改 南京等保测评

【C语言】return 关键字

謓泽

11月月更

行业首个测试开发技术大赛开始报名啦~ 10万现金奖励等你来挑战

霍格沃兹测试开发学社

数字先锋| 随时随地云端阅片,“云胶片”时代来啦!

天翼云开发者社区

二面美团,有惊无险已拿offer,不得不说“太难了”

钟奕礼

Java 程序员 java编程 Java 面试题

2022年中国母婴新消费市场专题分析

易观分析

母婴 消费市场

背完这3套Java面试题,年后offer接不停

钟奕礼

Java java面试 java编程 程序员java

物流通知:您的快递即刻送达!

天翼云开发者社区

源自双11混部实战,Koordinator 如何保障应用服务质量?

阿里技术

云原生 混部技术

把Mybatis Generator生成的代码加上想要的注释

京东科技开发者

maven IDEA 代码注释 MyBatis标签 Generator

如何平衡客户和用户的诉求冲突?

QualityFocus

产品经理 需求 产品需求

双机热备与集群的区别分析-行云管家

行云管家

高可用 双机热备 双机

Jenkins + Docker 一键自动化部署 Spring Boot 项目

小小怪下士

Java Docker jenkins springboot

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