50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

JVM 类加载过程与字节码执行深度解析

量贩潮汐·WholesaleTide

JVM

蚂蚁开源统一多模态模型 Ming-Omni,多模态输入与生成;OpenAI 将与芭比娃娃制造商合作 AI 玩具丨日报

声网

鸿蒙开发实战之Service Collaboration Kit实现美颜相机能力开放

yimapingchuan

HarmonyOS

鸿蒙开发实战之Status Bar Extension Kit增强美颜相机状态交互

yimapingchuan

HarmonyOS

Yate for Mac音乐标签管理工具

晨光熹微

软件工厂:下一代工业“看不见的流水线”

DevOps和数字孪生

软件仿真

Java 锁升级机制详解

量贩潮汐·WholesaleTide

Java

ETL常见的数据转换方式

谷云科技RestCloud

MySQL 数据处理 ETL 数据转换 数据集成工具

Java集合--LinkedList源码可视化

电子尖叫食人鱼

Java

HarmonyOS实战:List拖拽位置交换的多种实现方式

IT小码哥

harmony HarmonyOS NEXT

(问题日志)解决因代理设置导致的npm包ECONNREFUSED下载错误

timeRATE

node.js npm

「RTE Builder」项目寻踪!推荐项目,瓜分社区奖励~

声网

Pro Microphone for mac专业麦克风

晨光熹微

JavaScript入门干货:蓝桥杯Web组分章学习笔记(基于蓝桥云课《JavaScript基础入门》)

timeRATE

JavaScript html 前端 笔记 新手

AI实战:一键生成数字人视频!

王磊

AWS ELB 可观测性最佳实践

观测云

ELB

阿里巴巴十亿级并发系统设计:实现高并发场景下的稳定性和高性能

程序员高级码农

程序员 java 架构

ViWizard Audio Capture for Mac:Mac 音频捕获的终极利器

晨光熹微

AI进行时,AlphaGPT引领法律服务新时代

科技汇

Mac终端党必备!xHistory 一键找回手滑删掉的命令,效率翻倍

柠檬与橘子

华南站最后席位|Altair 区域技术交流会报名倒计时:现场体验 Altair® HyperWorks® 2025全新版本

Altair RapidMiner

人工智能 AI 数字孪生 仿真 CAE

双奖加冕×销量领跑!九号微电影《记忆奇旅》斩获虎啸奖,硬核科技再证跨界实力

科技热闻

个人建站做SEO网站外链这一点需要注意,做错了可能受到Google惩罚

村头的猫

SEO 建站

谷歌云代理 | 金融合规上云:谷歌云PCI DSS认证环境搭建指南

Cloud Ace 云一

《欢迎来到经验时代》— 强化学习之父、2024 年获图灵奖得主

GPU算力

人工智能 深度学习 强化学习 图灵奖 经验时代

Volcano v1.12 正式发布!驱动云原生AI与批量计算向智能高效新阶段演进

华为云原生团队

云计算 容器 云原生 Volcano

智能体(AI Agent)开发实战之【LangChain】(一)接入大模型输出结果

我和AI的成长

人工智能 AI 智能体 langchain AI Agent

你了解CAS吗?有什么问题吗?如何解决?

不在线第一只蜗牛

Java Python

CST的热仿真THt瞬时求解器--针式散热片

思茂信息

仿真 cst cst使用教程 CST软件 CST Studio Suite

开放、开源、协作、成长!国家超算互联网上线AI社区

科技热闻

苹果用户你别走,用这个神器也能在你的Mac电脑上玩《双影奇境》了!

阿拉灯神丁

MacBook 双人成行 mac冒险游戏 CrossOver Mac下载 Mac游戏推荐

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