红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

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

关注

评论

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

Spring Cloud Gateway修改请求和响应body的内容

Java 程序员 后端

Spring--基于IOC的CRUD操作

Java 程序员 后端

spring-cloud-kubernetes背后的三个关键知识点

Java 程序员 后端

Spring Cloud:第二章:eureka服务发现

Java 程序员 后端

Spring--基于AOP实现事务控制

Java 程序员 后端

Spring Cloud Gateway限流实战

Java 程序员 后端

Spring+SpringMVC+Mybatis框架整合(SSM整合)

Java 程序员 后端

Spring Boot+Mybatis+thymeleaf整合

Java 程序员 后端

【LeetCode】合并两个有序数组Java题解

Albert

算法 LeetCode 11月日更

Spring Cloud 2020 版本最佳实践,你落伍了

Java 程序员 后端

Spring MVC温故而知新 – 从零开始

Java 程序员 后端

Go WebSocket开发与测试实践【/net/websocket】

FunTester

Java websocket 接口测试 Go 语言 FunTester

Spring(一):容器的实现——两大核心类

Java 程序员 后端

spring-bean的理解

Java 程序员 后端

Spring5 框架新功能(Webflux)

Java 程序员 后端

Spring Boot 快速入门(一)

Java 程序员 后端

Spring 三级缓存和循环依赖 思考和总结

Java 程序员 后端

从环境搭建到回归神经网络案例,带你掌握Keras

华为云开发者联盟

Python 神经网络 tensorflow keras 回归神经网络

Spring Boot 实战(11)整合MyBatis-Plus

Java 程序员 后端

Spring Boot 接入 GitHub 第三方登录,只要两行配置!

Java 程序员 后端

Vue进阶(幺柒伍):色彩搭配

No Silver Bullet

Vue 11月日更

Spring Boot在微服务中的最佳实践

Java 程序员 后端

Spring MVC框架:第七章:REST架构风格(1)

Java 程序员 后端

Spring MVC框架:第七章:REST架构风格

Java 程序员 后端

来,带你一次性搞懂数据分析和数据挖掘!

博文视点Broadview

Spring Boot 操作 Redis 的各种实现

Java 程序员 后端

Spring Boot 核心的 25 个注解

Java 程序员 后端

Spring Boot 集成 Elasticsearch 实战

Java 程序员 后端

fastposter 2.2.0 新版本发布 电商级海报生成器

物有本末

Java Vue 海报 fastposter 海报生成器

外包学生管理系统详细架构设计文档

Beyond Ryan

Spring MVC框架:第六章:传统增删改查

Java 程序员 后端

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