写点什么

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

评论

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

GPUStack正式发布: 为大模型而生的开源GPU集群管理器

SEAL安全

AI 大模型 AIGC LLM GenAI

观测云与传统监控:差距究竟有多大?

观测云

监控

精益管理| 河南钢铁集团:以盈利型采购生态应对复杂的市场挑战

用友BIP

活动预告|8月3日 Streaming Lakehouse Meetup · Online 与你相约!

Apache Flink

StarRocks 实时湖仓 paimon

喜报!望繁信科技CEO索强与CTO李进峰双双荣获2024上海软件企业技能人才奖

望繁信科技

人工智能 #大数据 流程智能 #流程挖掘 上海望繁信科技

领先实践| 能源央企构建世界一流司库管理体系

用友BIP

GraalVM 静态编译下 OTel Java Agent 的自动增强方案与实现

阿里巴巴云原生

阿里云 云原生 可观测

中石化中海燃供总会计师刘汉坤:一场数智革命,对内打破部门墙,对外抢占先机

用友BIP

喜报!钛铂数据 TapDB 通过中国信通院文档数据库产品测试

tapdata

国产数据库 TapDB 国产分布式文档数据库 钛铂分布式文档数据库 中国信通院测试

多重认可!嘉为科技入选《Gartner 2024中国基础设施战略成熟度曲线》

嘉为蓝鲸

AIOPS Gartner 可观测 OpenTelemetry

店铺商品搜索API返回值中的商品标题、图片与价格解析

技术冰糖葫芦

API Explorer API 编排 api 货币化 API 文档

GPUStack正式发布: 为大模型而生的开源GPU集群管理器

GPUStack

AI 大模型 AIGC LLM GenAI

“用友BIP成就数智企业”入选新质生产力案例库

用友BIP

AI项目验收!用友助力鑫阳钢铁进入智能判钢新时代

用友BIP

从消息流平台Serverless之路,看Serverless标准演进

Serverless 华为云

Prometheus Pushgateway 协议上报观测云最佳实践

观测云

监控

gin框架上手实践

FunTester

职场<火焰杯>测试开发大赛决赛成绩及获奖名单公布!

霍格沃兹测试开发学社

Gartner《IT服务管理平台市场指南》报告解读

嘉为蓝鲸

ITSM Gartner gartner中国 IT服务管理

ceph数据重构原理

天翼云开发者社区

分布式系统 存储 硬盘故障

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