抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

TypeScript 2.2 为 JavaScript 开发者带来更多期待的功能

2017 年 3 月 07 日

Microsoft 发布了 TypeScript 语言 2.2 版本,该版本专注于新的 object 类型以及提高开发人员的效率。

对于日常使用,版本 2.2 提供了许多人性化功能(creature comfort),这些功能可以减少开发人员花费在处理简单错误上的时间。一些功能,比如添加缺失的导入和删除未使用的声明,使 TypeScript 的工具与其他语言的工具更加接近。TypeScript/JavaScript 中一个极为常见的错误是忘记如何正确地使用 this 关键字。下面的图片来自于 TypeScript 2.2 公告,它演示了许多新的工具改进:

quick-fixes-TS2_2.mp4 未知大小

对于那些使用 VS Code 的开发者,可以在 VS Code 1.10 中通过点击Ctrl+.组合键实现快速修复。

一个非常重要的改进是能够以 JavaScript 开发人员习惯的方式使用字符串索引。 在 JavaScript 中,可以通过以下几种方式访问对象属性。

复制代码
var y = x["prop"];
var z = x.prop;

在本示例中,y 和 z 以不同的方式(两种方式都有效)访问 x 的属性 prop,因此二者具有相同的值。在 TypeScript 2.2 之前,使用索引签名声明的对象:

复制代码
interface Foo {
// 这里是一个字符串索引签名:
[prop: string]: boolean;
}

只能通过上述第一种方法访问。经验丰富的 JavaScript 开发人员会不假思索地使用这两种方法中的任何一种访问属性。 现在,版本 2.2 支持这两种属性访问方法。

新的 object 类型可以是除基本数据类型之外的任何类型。虽然新功能受到欢迎,但是附加的类型也可能给新开发者造成混淆。在 TypeScript 项目经理 Daniel Rosenwasser 发布的公告中,需要仔细阅读这句话才能真正理解新功能能够做什么:

由于结构兼容性…object 不同于{}类型和 Object 类型。因为空对象类型({})也可以匹配基本类型值,所以它不能创建像 Object.create 这样的 API,这类 API 只接受对象——而非基本类型值。相反,object 做得非常好,它能够正确地拒绝数字赋值。

注意该段落中的字体变化,它让我们能更容易理解什么时候我们谈论的是具体对象类型和什么时候我们谈论的是对象的一般概念。 Marius Schulz 撰写了一篇文章,这篇文章阐述了有关对象类型之间差异的更多细节。

查看英文原文: TypeScript 2.2 Release Gives JavaScript Developers More of What They Expect

2017 年 3 月 07 日 18:001335

评论

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

ARTS打卡-07

Geek_yansheng25

思想无语言边界:以cglib介绍AOP在java的一个实现方式

八苦-瞿昙

随笔 随笔杂谈 aop

我关闭了微信朋友圈广告!

诸葛小猿

广告 微信朋友圈 关闭

Prometheus 删除指定 Metric

耳东

Prometheus metrics

架构师训练营第七周作业--web压测工具

CATTY

罪羊树——暴力也是种优雅

烫烫烫个喵啊

算法 二叉树 替罪羊 平衡二叉树

Doris故障处理

Karl

关于性能优化的总结

罗亮

应届生求职面试真的有那么难吗

xcbeyond

面试 应届生

Golang实现结构体数组按多字段排序

卓丁

多字段排序 结构体多字段排序 golang多字段排序

redis系列之——事物及乐观锁

诸葛小猿

redis 乐观锁 事物 原子性 隔离性

JDK1.8新特性(五):Stream,集合操作利器,让你好用到飞起来

xcbeyond

stream 集合 新特性 JDK1.8 JDK1.8新特性

第六周总结

Karl

架构师课程第七周 作业

杉松壁

Vagrant 创建多台主机

FeiLong

vagrant 虚拟机

运行 client-go 测试用例.md

FeiLong

Kubernetes

用 GitBook 创建一本书

耳东

git markdown gitbook

Windows Sandbox应用

Dare Devor

容器 Sandbox 虚拟化

Docker容器中一定要避免的10件事

xcbeyond

Docker 避坑

谈谈你是如何理解JS异步编程的,EventLoop、消息队列都是做什么 ,什么是宏任务,什么是微任务?

GKNick

web 性能压测工具类

jason

计算机网络基础(六)---网络层-网络地址转换NAT技术

书旅

laravel 计算机网络 网络协议 计算机基础 NAT

JDK1.8新特性(二):为什么要关注JDK1.8

xcbeyond

新特性 JDK1.8 JDK1.8新特性

记一次西安thoughtworks的面试经历

xcbeyond

面试 面试经历 thoughtworks

自从用完Gradle后,有点嫌弃Maven了!速度贼快!

xcbeyond

maven Gradle

架构师训练营 - 第 6 周学习总结

红了哟

JDK1.8新特性(三):Lambda表达式,让你爱不释手

xcbeyond

Lambda 新特性 JDK1.8 JDK1.8新特性

JDK1.8新特性(四):函数式接口

xcbeyond

新特性 函数式编程 JDK1.8 JDK1.8新特性

多问为什么

声远

技术 沟通 软件开发流程

架构师训练营 - 第 6 周命题作业

红了哟

发布一本用 GitBook 编辑的书

耳东

git gitbook

Study Go: From Zero to Hero

Study Go: From Zero to Hero

TypeScript 2.2为JavaScript开发者带来更多期待的功能-InfoQ