写点什么

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:002899
用户头像

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

关注

评论

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

成功案例丨Altair HyperWorks 助力打造复杂玻璃快速验证工具

Altair RapidMiner

hyperworks 玻璃载荷分析 静态载荷分析 复杂玻璃验证

海信Vidda C2和极米RS 10区别 极米RS 10和海信Vidda C2至臻版对比评测

妙龙

海信投影仪 投影仪 极米投影仪

海信Vidda c2s和极米RS 10 PRO区别

妙龙

海信投影仪 投影仪 极米投影仪

海信 Vidda C2S 三色激光投影仪 怎么样

妙龙

海信投影仪 投影仪

海信viddac2和当贝f6哪个好 海信viddac2至臻版和当贝f6区别对比

妙龙

海信投影仪 投影仪

海信75E7N和TCL75Q10K选哪个

妙龙

智能电视 海信电视 tcl电视

实评实测 | ETL 行业也够卷,云化 ETL,ETL 软件不过了

tapdata

数据复制 云迁移解决方案 云化etl etl软件 etl工具

海信c2pro和C2Ultra区别对比 vidda海信c2pro和C2Ultra哪个好

妙龙

海信 海信投影仪 投影仪

极米RS10Ultra大师版和海信ViddaC2Ultra区别

妙龙

海信投影仪 投影仪 极米投影仪

5M/10M|Want faster, more reliable Wi-Fi with QCN9074?

wallyslilly

海信Vidda C2至臻版和C2S的区别对比评测

妙龙

海信 海信投影仪 投影仪

海信viddac2和当贝f6哪个好 海信viddac2至臻版和当贝f6区别对比

妙龙

海信投影仪 投影仪

hyper dunk,如何正确使用hyper-v

柳岸风吟

海信100E5npro+和100e7n对比

妙龙

智能电视 海信电视

《CPython Internals》阅读笔记:p353-p355

codists

CPython Internals

当年很流行,现在已经淘汰的前端技术有哪些?

秃头小帅oi

海信Vidda C2至臻版 评测 使用感受

妙龙

海信投影仪 投影仪

海信ViddaC2、C2S、C2 Pro和C2 Ultra区别对比

妙龙

海信投影仪 投影仪

海信Vidda C2 Ultra 评测 值得买吗

妙龙

海信 海信投影仪

海信75E7N和夏普C75FL1A 对比

妙龙

智能电视 海信电视

1688app商品详情接口系列(1688API)

tbapi

1688商品详情接口 1688API

自己搭建云电脑,自己搭建云电脑的一般方法

柳岸风吟

海信75E7N和统帅L75F66区别

妙龙

海信电视

独立开发者,都在使用哪些技术栈?

高端章鱼哥

海信 Vidda C2 Pro 三色激光投影仪 参数 评测

妙龙

海信投影仪 投影仪

云电脑私有云,怎样成功搭建私有云存储

柳岸风吟

海信75E7N和海信75E3K PRO对比

妙龙

智能电视 海信电视

IT 领域最被低估的六项技术

伤感汤姆布利柏

当贝F7 Pro和Vidda C2 Pro有什么区别

妙龙

海信投影仪 当贝投影仪 家用投影仪

在电商行业中 API 是什么意思?

科普小能手

数据挖掘 数据分析 电商 跨境电商 API 接口

项目规划需要考虑哪些因素

易成研发中心

项目管理 项目规划

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