QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

TypeScript 1.7 发布:支持 async/await、模块化、多态 this 和求幂语法

  • 2015-12-04
  • 本文字数:1708 字

    阅读完需:约 6 分钟

伴随着 Visual Studio 2015 Update 1 的发布,TypeScript 1.7 也发布了,新版本默认支持 ES6 (ECMAScript 6) 的 async/await 以及模块化特性,支持多态“this”类型,支持 ECMAScript 2016 提出的求幂语法。详细的变更列表,可以查看 GitHub 上的路线图

和之前一样,用户可以通过 Visual Studio 2015 Update 1 Visual Studio 2013 NPM 或者直接通过源码来使用 TypeScript 1.7 。

Async/Await

在 1.7 版本中,用户能够在启用了 ES6 Generator 支持的目标上(例如 Node.js V4 及更高版本)使用 async 函数。而使用了 async 前缀的函数是异步函数,开发者可以在程序中使用 await 关键字来停止异步函数的执行,直到约定被满足为止。示例如下:

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

复制代码
"use strict";
// printDelayed is a 'Promise<void>'
async function printDelayed(elements: string[]) {
for (const element of elements) {
await delay(200);
console.log(element);
}
}
async function delay(milliseconds: number) {
return new Promise<void>(resolve => {
setTimeout(resolve, milliseconds);
});
}
printDelayed(["Hello", "beautiful", "asynchronous", "world"]).then(() => {
console.log();
console.log("Printed every element!");
});
</void></void>

Microsoft 正在努力将 TypeScript 中的 async/await 支持扩展到其他领域,包括浏览器这一并不支持 ES6 Generator 的领域。如果想要了解 async/await 的实现细节以及使用方法,可以查看博文《什么是 Async/Await》

多态 this 类型

在经过了大量的社区讨论和反馈之后,TypeScript 1.7 增加了一个新的多态 this 类型。开发者能够在类和接口中使用 this 类型,以表示某些类型是包含类型的子类型(而不是包含类型本身)。该特性能够让层级流式 API 这样的模式更加容易表达。

复制代码
interface Model {
setupBase(): this;
}
interface AdvancedModel extends Model {
setupAdvanced(): this;
}
declare function createModel(): AdvancedModel;
newModel = newModel.setupBase().setupAdvanced(); // fluent style works

如果想深入了解该关键字,可以查看 TypeScript Wiki

作为支持该特性的一部分,TypeScript 1.7 修改了 this 的类型推理逻辑。在一个类中,值 this 的类型将会被推断为 this 类型,用后续的原始类型值赋值会失败。作为一种替代方法,用户可以为 this 添加一个类型注解。使用替代方法的代码示例以及其他可能的重大变化可以查看GitHub。

ES6 模块

TypeScript 1.7 将 ES6 添加到了选项列表中,开发者能够使用–module 标记,当目标为 ES6 的时候指定模块化输出。这一特性为用户提供了更多的扩展性,让用户能够针对具体的运行时精确地指定特性。例如,现在能够以 Node.js v4 为目标,它并不支持 ES6 模块,但是支持一些其他的 ES6 特性。

复制代码
//tsconfig.json targeting node.js v4 and beyond
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
}
}

ES7 求幂运算

最后是一个小语法糖。ECMAScript 委员会最近将求幂运算符提议移动到了第三阶段。对于 Microsoft 来说这表示在 TypeScript 中采纳该特性的时机已经成熟,于是在 TypeScript 1.7 中添加了对它的支持。

复制代码
let squared = 2 ** 2; // same as: 2 * 2
let cubed = 2 ** 3; // same as: 2 * 2 * 2
let num = 2;
num **= 2; // same as: num = num * num;
Say goodbye to Math.pow()!

下一步计划

虽然 Microsoft 非常愉快地宣布了他们在该版本中做的所有提升,但是 Microsoft 也一如既往地关注社区的反馈。如果你对 TypeScript 的未来非常关注,那么 Microsoft 非常鼓励你检出已有的问题给他们提出pull request ,或者在 Gitter 上与 TypeScript 团队交流。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-04 18:004985
用户头像

发布了 321 篇内容, 共 123.2 次阅读, 收获喜欢 19 次。

关注

评论

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

TiDB K8S 删除备份阻塞问题排查

TiDB 社区干货传送门

TiDB 底层架构 管理与运维

【SOP 系列 19】region 分布不均问题排查及解决不完全指南

TiDB 社区干货传送门

管理与运维

SQLserver迁移TiDB场景的实践

TiDB 社区干货传送门

迁移 管理与运维

TiDB集群的GC不回收案例(案情二)

TiDB 社区干货传送门

故障排查/诊断

TiDB 配置参数修改与系统变量修改步骤

TiDB 社区干货传送门

实践案例

TiDB和MySQL的锁一些分析比对

TiDB 社区干货传送门

实践案例 TiDB 底层架构

TiDB 集群 TiKV 节点内存占用较高问题排查

TiDB 社区干货传送门

故障排查/诊断

SQL上线引发的血案

TiDB 社区干货传送门

TiDB 入门运维基础教程(二)--生产环境安装

TiDB 社区干货传送门

安装 & 部署

TIDB:分布式事务算法Percolator学习笔记

TiDB 社区干货传送门

TiDB 底层架构

TiDB 在 2021 易车 818 汽车狂欢节的应用

TiDB 社区干货传送门

实践案例

【精选实践】58 集团的数据库技术选型思路

TiDB 社区干货传送门

数据库架构选型

TiDB在X86和ARM混合平台下的离线部署和升级

TiDB 社区干货传送门

安装 & 部署

伴鱼数据库之性能大盘

TiDB 社区干货传送门

社区资源这么丰富我们怎么抄作业

TiDB 社区干货传送门

从TiDB中学习代码提交规范的重要性

TiDB 社区干货传送门

TiDB 底层架构

TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)

TiDB 社区干货传送门

管理与运维

都是空格惹的祸

TiDB 社区干货传送门

扩容TIKV节点遇到的坑

TiDB 社区干货传送门

管理与运维

TiDB K8S 定时备份状态异常问题排查

TiDB 社区干货传送门

管理与运维

TiDB 集群跨平台在线迁移方案(离线环境下从 x86 节点迁移到 arm64 节点)

TiDB 社区干货传送门

管理与运维

TIDB br 备份 PermissionDenied

TiDB 社区干货传送门

使用 TiCDC 实时同步 TiDB 数据到备用逃生环境的实践

TiDB 社区干货传送门

实践案例 安装 & 部署

热烈庆祝58同城TiDB All in v4.0.2(附核心PMC订单流水业务升级流程和一点使用感悟)

TiDB 社区干货传送门

【TiDB 最佳实践系列】海量 Region 集群调优

TiDB 社区干货传送门

实践案例

【TiDB CPU使用率过高之一】Scheduler worker CPU

TiDB 社区干货传送门

实践案例

TiDB for PostgreSQL 学习指南

TiDB 社区干货传送门

实践案例 管理与运维

分区的现状与未来规划

TiDB 社区干货传送门

生产环境 TiDB V5.0.3 集群部署

TiDB 社区干货传送门

实践案例

干货分享丨携程国际业务动态实时标签处理平台实践

TiDB 社区干货传送门

实践案例

DM 2.0 小试牛刀

TiDB 社区干货传送门

TypeScript 1.7发布:支持async/await、模块化、多态this和求幂语法_语言 & 开发_孙镜涛_InfoQ精选文章