10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

SDN系统方法 | 8. 网络虚拟化

俞凡

架构 网络 sdn SDN系统方法

简约而不简单的Kanban方法

Bruce Talk

Kanban 敏捷开发 Agile

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

intelamd

【mycat】mycat在windows环境下的安装和启动

迷彩

架构 mycat 数据库中间件 MySQL 数据库 6月月更

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

joak

架构训练营模块四作业

融冰

TypeScript中你可能会忽略的细节

真嗣

typescript 前端

Vue-14-列表渲染v-for

Python研究所

6月月更

【愚公系列】2022年06月 通用职责分配原则(七)-纯虚构原则

愚公搬代码

6月月更

2022 年 Java 行业分析报告

看山

Java 行业报告

异步任务处理系统,如何解决业务长耗时、高并发难题?

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算 FC

测试开发【Mock平台】07开发:项目管理(三)组件Modal和Form讲解,并利用其实现添加功能

MegaQi

测试平台开发教程 6月月更 测试技术干货

Java 应用压测性能问题定位经验分享

阿里巴巴云原生

阿里云 云原生 压测 性能压测

GNU/Linux知识库(2)- 安装和文件系统

冯亮

Linux DevOps GNU

千万级学生管理系统考卷模块存储架构设计

泋清

#架构训练营

Android MediaPlayer音频播放器详解

yechaoa

android 6月月更 MediaPlayer

华为云图引擎服务

程思扬

华为 华为云 云开发

网上教学 助力战疫 | 社区征文

yu

原创 原创保护 初夏征文

《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)

懒时小窝

网络编程

列表视图——基于函数的视图 Django

海拥(haiyong.site)

Python django 6月月更

Prometheus、Grafana安装配置linux服务器监控dashboard

橙子猿

golang Prometheus #Grafana

关于分布式系统一致性

Joseph295

GNU/Linux知识库(3)- 命令行和包管理

冯亮

Linux DevOps GNU

vue全局守卫

小恺

6月月更

详解python的运行方式

左手の明天

Python 运行原理

《清单革命》:如何忙而不乱?

郭明

读书笔记

力扣每日一练之数组下篇Day3

京与旧铺

6月月更

Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch

看山

Java Switch

架构实战营|模块4

KDA

#架构实战营

Java—虚拟机

武师叔

6月月更

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