写点什么

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

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

    阅读完需:约 4 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

微软发布了 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:023074

评论

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

架构师训练营第十一周作业1

韩儿

最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)

星安果

Python MySQL 数据库 最全总结

國際網路 商業因果-緣起

因田木

十二周作业

solike

知识改变命运,你相信这句话吗?

熊斌

成长 演讲 教育

食堂就餐卡系统设计

跳蚤

第六周 学习总结

简简单单

架构师训练营第十五周课程笔记及心得

Airs

编程常用的加密方式

皮蛋

加密 加解密 加密技术

辞幕2020,前行2021

iHTC

程序员 中年危机 提升自我 年终总结 技术学习

LeetCode题解:264. 丑数 II,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

性能优化-1-压测

raox

架构师训练营大作业一

吴传禹

架构师训练营第 1 期

架构师训练营大作业二

吴传禹

架构师训练营第 1 期

架构师培训第一周学习总结

跳蚤

元旦首献!腾讯高工甩出的“MyBatis源码解析”传授你年薪百万级干货!

比伯

Java 编程 架构 面试 技术宅

51 张图助你彻底掌握 HTTP 协议

Java架构师迁哥

三面百度,四面字节跳动。我是怎么被百度吊打,又是怎么拿下字节offer的?(Java开发岗)

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营第十一周作业2

韩儿

第十周-作业1

Mr_No爱学习

UML实践

Iris

架构师训练营 4 期

架构师训练营大作业一

吴传禹

架构师训练营第 1 期

我花费一年的时间明白大厂面试的残酷!也最终拿到蚂蚁金服offer,定级P7职位。

Java架构之路

Java 程序员 架构 面试 编程语言

AOP的姿势之 简化 MemoryCache 使用方式

八苦-瞿昙

C# aop cache

架构师系列 12 单向散列加密算法对用户密码加密

桃花原记

重点人员管控系统开发大数据分析研判平台搭建

t13823115967

微警务

[架构师训练营] 第一周学习总结

Fango

架构师训练营 4 期

第十周-学习总结

Mr_No爱学习

第六周 技术选型(二) 课后作业

简简单单

公安微警务APP开发,移动警务系统建设方案

t13823115967

大数据

架构训练营第十一周作业

一期一会

高可用架构

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