HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

TypeScript 2.1 发布

  • 2016-12-14
  • 本文字数:1429 字

    阅读完需:约 5 分钟

TypeScript 是微软开发的一个 JavaScript 的超集,提供了最新的 JavaScript 特性以及可选的静态类型。近日, TypeScript 2.1 发布。该版本提供了功能更为强大的类型检查器,并且让开发人员可以编写出更简洁的代码。以下是该版本带来的主要新特性:

  • Downlevel async/await:虽然之前的版本已经提供了 async/await,但 downlevel async/await 让开发人员可以在 ES3/ES5 环境里使用该特性。
  • Object Rest&Spread:这是 ES2017 的一项新提案,让开发人员可以便捷地合并、拆解以及部分地复制对象。在使用类似 Redux 这样的库时,这一特性已经被广泛地使用。Object Spread 让开发人员可以便捷地复制一个对象,如下所示:
复制代码
let copy = { ...original };

类似地,我们可以合并多个不同的对象,如下所示,合并后的对象将同时具有 foo、bar 和 baz 的属性:

复制代码
let merged = { ...foo, ...bar, ...baz };

开发人员也可以在合并后的对象中添加新属性。Object Rest 是一个相对的过程,它可以排除特定的属性,如下所示:

复制代码
let { a, b, c, ...defghijklmnopqrstuvwxyz } = alphabet;
  • keyof 和 Lookup 类型:实际上,keyof 操作符被称为“索引类型查询(index type query)”,它就像一个查询对象类型的键的查询,如下所示:
复制代码
interface Person {
name: string;
age: number;
location: string;
}
let propName: keyof Person;

上述代码也可以写成如下形式:

复制代码
let propName: "name" | "age" | "location";

而 Lookup 类型被称为“索引访问类型(indexed access types)”,它看上去像访问一个元素,如下所示:

复制代码
interface Person {
name: string;
age: number;
location: string;
}
let a: Person["age"];
  • “映射类型(Mapped Types)”:这是 TypeScript 2.1 最令人感兴趣的特性。假如我们有一个 Person 类型,如下所示:
复制代码
interface Person {
name: string;
age: number;
location: string;
}

如果我们希望以此为基础创建一个属性全为布尔值的类型,那么我们需要定义一个全新的类型:

复制代码
interface BooleanifiedPerson {
name: boolean;
age: boolean;
location: boolean;
}

而借助映射类型,我们可以将 BooleanifiedPerson 定义为:

复制代码
type BooleanifiedPerson = {
[P in "name" | "age" | "location"]: boolean
};

借助 keyof 操作符,上述代码还可以进一步简化为:

复制代码
type BooleanifiedPerson = {
[P in keyof Person]: boolean
};
  • Partial 类型:让开发人员可以创建现有类型的所有可选版本。此外,TypeScript 2.1 还提供了 Readonly、Record 和 Pick 等实用类型,感兴趣的读者可以点击这里查看它们的实现方式。

此外,TypeScript 2.1 还放松了对程序包导入的检查,只要用户安装了就可以使用,TypeScript 将不会再因为找不到相关的声明文件而提示错误。

感兴趣的读者可以通过 NuGet 获取 TypeScript,也可以通过 npm 进行安装:

复制代码
npm install -g typescript

Visual Studio 2015 用户需要首先升级到 Update 3 ,再通过专门的安装包进行安装。 Visual Studio Code Sublime Text 用户也可以根据相关的说明使用最新版本的 TypeScript。


感谢陈兴璐对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-14 18:002804
用户头像

发布了 1008 篇内容, 共 389.8 次阅读, 收获喜欢 344 次。

关注

评论

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

win版EssentialPIM Pro Business(个人信息管理器) v12.0.2 中文注册版

iMac小白

弹性云主机实例怎么选?

天翼云开发者社区

云计算 云主机

win版Adobe After Effects 2023(Ae2023)v23.6.6.2 (x64) 直装版

iMac小白

win版Topaz Gigapixel AI(图像无损放大工具) v7.2.3 绿色便携版

iMac小白

win版n-Track Studio Suite(音频录制和编辑软件) v10.1.0.8705 (x64)特别版

iMac小白

面试官:Java类是如何被加载到内存中的?

快乐非自愿限量之名

Java 面试 内存

ES-Computing EditPlus(文本编辑器)v6.0.6直装版

iMac小白

win版Aiseesoft Video Converter Ultimate(万能视频转换器) v10.8.50激活版

iMac小白

win版4K Video Downloader Plus(4K视频下载器) v1.7.2特别版

iMac小白

Galaxy Digital Q2 加密风投报告:反弹仍在持续,与上一轮牛市还有差距

TechubNews

大学生必备!GitHub星标破千的matlab教程(从新手到骨灰级玩家)

我再BUG界嘎嘎乱杀

Python 大数据 数据分析 数据可视化 matlab

AutoCAD 2022 for Mac/Win版 安装包下载

你的猪会飞吗

AutoCAD2022 AutoCAD2022序列号 cad2022Mac版 cad2022下载

当心!不要在SpringBoot中再犯这样严重的错误

秃头小帅oi

win版Advanced SystemCare Pro(电脑优化工具) v17.5特别版

iMac小白

灾难恢复中的异步复制和同步复制

天翼云开发者社区

网络安全 灾难恢复 异步复制 同步复制

Java基础:线程的三种创建方式

不在线第一只蜗牛

Java 线程 JVM

SD-WAN组网:跨国企业网络互联解决方案

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

通义灵码入选 2024 世界人工智能大会最高荣誉「镇馆之宝」

阿里巴巴云原生

阿里云 云原生 通义灵码

win版Adobe Photoshop 2023(PS2023) v24.7中文版

iMac小白

如何确保海外社媒账号的安全稳定——海外云手机

Ogcloud

云手机 海外云手机 云手机海外版 海外云手机推荐 海外社媒运营

如何把域名解析到自己的网站?一文读懂域名解析那些事

国科云

通义灵码入选 2024 世界人工智能大会最高荣誉「镇馆之宝」

阿里云云效

阿里云 云原生 通义灵码

win版4K Video Downloader(高清视频下载软件) v4.31特别版

iMac小白

TypeScript 2.1发布_JavaScript_谢丽_InfoQ精选文章