AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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

评论

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

如何真正学习Go 语言

宇宙之一粟

golang 学习方法 Go 语言 12月日更

模块7作业

小何

「架构实战营」

模块七作业

心怀架构

53 K8S之资源监控与资源指标

穿过生命散发芬芳

k8s 28天写作 12月日更

王者荣耀商城异地多活架构设计

Steven

架构实战课

如何在CRM WebClient UI里使用HANA Live Report

汪子熙

报表 CRM 28天写作 hana 12月日更

架构实战营模块七作业

渐行渐远

架构实战营

架构训练营 - 模块 7 作业

焦龙

架构训练营

圣迪

深入浅出 OceanBase 运维之弹性扩缩容

OceanBase 数据库

直播 弹性扩容 OceanBase 开源

apacheunomi漏洞介绍及代码分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

架构师实战营 - 模块7 - 作业

lucian

架构师实战营

绩效沟通的案例分享

搬砖的周狮傅

绩效管理

编写代码最应该做好的事情是什么?

李子捌

Java 28天写作 21天挑战 12月日更

模块7作业

忘记喝水的猫

架构训练营

Golang中数字与字符串的转换

liuzhen007

28天写作 12月日更

企业智能转型对AI技术的挑战及应对,答案是MLOps

第四范式开发者社区

机器学习 OpenMLDB 特征平台 MLOps

销售易携手DataPipeline,推动“实时感知-主动决策-客户成功”的变革!

DataPipeline数见科技

大数据 中间件 数据融合 数据迁移 数据管理

MySQL的int (10) 和 int (11) 的区别

JavaEdge

12月日更

人生最重要的是快乐,静态的快乐

mtfelix

28天写作

.NET6东西--可写的JSON DOM API

喵叔

28天写作 12月日更

严管之下,还有谁在“挖矿”?

CECBC

架构实战营-模块七

瓜子葫芦侠

「架构实战营」

王者荣耀商城异地多活架构设计

Geek_cb2b43

LabVIEW读写各类格式图像的方法(基础篇—1)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 读写各类格式图像的方法

释放协同价值——元宇宙中的区块链

CECBC

读《软件工程之美》之02

williamcai

软件工程

监控的黄金指标有哪些

耳东@Erdong

监控 28天写作 指标 12月日更

有向无环图在新增节点时的环状检测

waitmoon

DAG

Redis RDB 持久化详解

程序员历小冰

redis 持久化 28天写作 12月日更

谈数字人民币对我国金融系统的双重影响

CECBC

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