BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 David Iffland 关注 4 他的粉丝 ,译者 谢旭 关注 0 他的粉丝 发布于 2017年3月8日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT