2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

数据存储难?华为云对象存储OBS轻松解决

IT科技苏辞

华为云CDN,如何助力智能新媒体转型

科技说

不止稳定快速,看华为云CDN如何在国际云服务市场中“分蛋糕”

爱科技的水月

华为云CDN加速服务的精细化管理,让加速变得简单起来

科技说

数据存储服务的百宝箱——华为云对象存储服务OBS

IT科技苏辞

软件测试 / 测试开发 / BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住

测试人

Docker 容器 软件测试 测试开发 环境搭建

ModStart交给您的开源年终总结

ModStart

极狐GitLab include 语法减少 CI/CD Pipeline 代码冗余,提升构建效率

极狐GitLab

DevOps CI/CD pipeline 极狐GitLab include

华为云CDN加速,为企业开启高效且安全的加速环境

科技说

“上云”成本低,稳定可靠!华为云OBS助力企业解决数据存储难题

与时俱进的时代

【电商行业必备神器】轻松备战“双十一”,华为云OBS值得拥有

与时俱进的时代

支持随时畅玩3A游戏,华为云大数据助力游戏厂商快速稳健发展!

与时俱进的时代

不止于快,华为云CDN加速服务对OBS桶文件加速的超实用技巧

爱科技的水月

华为云大数据BI解决方案助企业突破数据壁垒,加快企业数字化建设

与时俱进的时代

数据存储安全责任重于泰山,看华为云对象存储服务OBS如何大展身手

IT科技苏辞

数据存储的全能侠——华为云对象存储服务OBS

IT科技苏辞

Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)

墨天轮

数据库 oracle 升级 安装 & 部署

华为云CDN加速,如何助力企业更好发展?

爱科技的水月

存储空间不够大?试试华为云OBS对象存储服务

与时俱进的时代

华为云CDN加速服务,让企业用户上网“走高速”

爱科技的水月

何惧内卷?华为云对象存储服务OBS工具随便拿出一个都很能打

与时俱进的时代

助力游戏厂商稳健发展,华为云大数据解决方案高效赋能!

与时俱进的时代

一文读懂 | Getaverse 节点部署

Geek_Web3

不止于快,华为云CDN加速服务为企业提供安全加速环境

科技说

华为云CDN加速服务助你开启网络加速时代

爱科技的水月

2022卡塔尔世界杯专题分析

易观分析

世界杯 体育

企业数据如何存?华为云对象存储服务OBS帮您忙

IT科技苏辞

华为云CDN:海量存储+过硬本领为用户带来更优体验

科技说

存储数据不要愁,华为云来帮你!

与时俱进的时代

软件测试 | 掌握高频 Docker 命令,夯实内功基础

测试人

Docker 软件测试 自动化测试 测试开发 环境搭建

2022年11月视频行业用户洞察:世界杯效应显著,咪咕视频凭借大屏、小屏同时触达球迷群体,未来体育营销将更加激烈

易观分析

视频 世界杯

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