10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

TypeScript 2.7 版本发布

  • 2018-02-05
  • 本文字数:1596 字

    阅读完需:约 5 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

TypeScript 2.7 版本已经发布了,新增了几个主要功能特性并进行了一些 bug 的修正。其中一些亮点包括对类属性的赋值检查、固定长度的元组和改进对象文字的类型推断。总的来说,这个版本对类型系统、ES2015+ 特性和总体的 TypeScript 开发者体验都进行了改进优化。

TypeScript 2.7 版本引入了一些突破性的改变,开发人员在升级代码库以使用 TypeScript 2.7 时,应该知晓这些变化。

当被问及 TypeScript 目前的版本规划时,项目经理 Daniel Rosenwasser 说:

我认为,从最广泛的意义上来说,我们关注的是易用性,并确保我们现有的用户继续在 TypeScript 上的投入是有价值的。前者通常是减少在起步时的学习成本,后者通常关注的是表现性及安全性。

例如,现有的 TypeScript 用户要求对类初始化进行更严格的检查。继 TypeScript 2.6 版添加了严格的函数类型检查之后,2.7 版本又添加了在类中使用strictPropertyInitialization 标志的严格属性初始化检查。这个标志会检查类的每个实例的属性,确定它是在类的构造方法里被初始化的,还是通过属性初始化程序初始化的。当升级到2.7 后,使用严格标记的开发人员将会自动地在他们的源代码中获得这个额外的检查。建议在TypeScript 中使用这一严格的标记,因为它可以帮助开发人员找到并消除其他类型的错误或异常行为。

明确的赋值断言功能也已经可用了,即使在TypeScript 分析器不能确认赋值时,也可以指示TypeScript 的控制流分析器始终认定一个明确已赋值的。

TypeScript 的设计师之一 Anders Hejlsberg 表示,版本还改进了对对象字面量的类型推断

改进在相同上下文中出现的多个对象字面量的类型推断。当多个对象字面量类型组成一个 union 类型时,我们将对象字面量类型规范化,这样所有的属性就会出现在 union 类型的每个组成部分中。

复制代码
const obj = test ? { text: "hello" } : {}; // { text: string } | { text?: undefined }
const s = obj.text; // string | undefined

第一行我们推断出 obj 的类型{},第二行随后导致了错误,因为 obj 似乎没有属性。这显然并不是理想的效果。

其他语言级别的改进包括改进union 类型和instanceof 表达式中结构相同类的处理方法,以及从操作符中推断出更好的类型保护

TypeScript 2.7 也对 ES2015+ 符号进行了改善支持。属性可以使用const 声明的符号来命名,可以在接口、类或类型文字中将Identifier 或PropertyAccessExpression 用作计算属性名称的一部分。

改进了与CommonJS 模块的互操作性,支持 import d from “cjs”,并使用了esModuleInterop 标志。在内部, TypeScript 利用了 CJS 模块的 ES 模块。Rosenwasser 向 InfoQ 解释了这项功能背后的动机:

我们知道在模块互操作性策略中存在一些不友好性,这使得一些用户更难以掌握 TypeScript。对于新 TypeScript 用户来说,这是一个障碍,这也是为什么我们要在这个版本中提高 esModuleInterop 标记优先级的原因。当然,我们也有参与对 ECMAScript 标准的更新,并且在发展我们语言时也非常注意吸收这些标准。

第三阶段的数字分隔符提议,预计将作为ES2018 的一部分,现在已经包含在TypeScript 中,帮助TypeScript 保持当前对JavaScript 语言的年度更新。

在TypeScript 2.7 中,有一些改进是针对开发人员使用体验的。像webpack 和Gulp 这样的开发工具将从新的增量构建编译器API 中受益。这一变化将使工具更容易地进行因更新代码带来的资源更新,而不是需要在每次增量更新中重新构建整个项目。此外,ide 还提供了一个更新的TypeScript 语言服务API,允许开发人员自动修复文件中所有已明确的问题

TypeScript 2.7 可以通过 npm 的 npm install -g typescript 命令进行安装,或通过 GitHub 获得。TypeScript 2.8 开发工作已经在进行中,预计将于 3 月下旬发布。

英文原文链接 TypeScript 2.7 Now Available

2018-02-05 18:002560

评论

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

RocketMQ 开源爱好者请注意邀您共探行业应用与生产实践

阿里巴巴云原生

实时渲染大赛结果将于3月31日晚8点B站直播公布,敬请期待!

3DCAT实时渲染

实时渲染 3D动画

大数据培训Hive 提高查询效率的方法

@零度

hive 大数据开发

企业和团队如何创建高效实用的知识管理体系

小炮

知识管理 企业

流动性挖矿APP系统开发介绍模式

Geek_232be3

LIP流动性挖矿

成本管理系统解决方案

低代码小观

企业管理 资产管理 成本优化 低成本 CRM系统

教你识别一些sequence的相关问题

华为云开发者联盟

序列 GaussDB(DWS) sequence GTM bind关系

TDengine 在蔚来能源系统的落地实践

TDengine

数据库 tdengine

大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

大咖说

数据库 阿里云 开源 网易

艾特网能全面参与数据中心蒸发冷却空调系列标准编制

科技热闻

【等保】二级等保是什么意思?哪些企业要做?多少钱?

行云管家

网络安全 等保 二级等保

最佳代码扫描工具,实现自动化代码扫描服务

阿里云云效

云计算 阿里云 开发 代码扫描 代码安全

ModStartCMS模块化建站系统 v3.6.0 内容标签增强,电脑手机适配

ModStart开源

王者荣耀商城异地多活架构设计

王大胖

web前端培训使用 Vue3来实现文章目录功能

@零度

Vue 前端开发

钉钉协同引擎与应用场景技术探索

阿里巴巴终端技术

分布式 跨平台 客户端 开发框架

DDoS攻击与防范策略

喀拉峻

网络安全 信息安全 DDoS

车联网平台百万级消息吞吐架构设计|车联网系列专题 05

EMQ映云科技

车联网 物联网 IoT emq 3月月更

多终端运行小程序,快速丰富智慧社区使用场景

Speedoooo

智慧社区 小程序管理平台 智慧家居 智能家居生态平台 生态平台

BookKeeper PMC 成员翟佳受邀参与DataFunSummit 大数据存储架构峰会

Apache Pulsar

开源 架构 云原生 bookKeeper Apache Pulsar

NFT元宇宙开发Defi模式NFT游戏开发DAPP

Geek_232be3

区块链 NFT生态链游

哈尔滨市消防救援支队:用宜搭打造消防智慧大脑,守护冰城平安

一只大光圈

低代码 数字化 消防 钉钉宜搭

重视软件开发的黑匣子

菜根老谭

bug 系统安全 程序日志

直播回顾|TGIP-CN 036:Apache Pulsar 最新技术进展与动态

Apache Pulsar

开源 云原生 中间件 Apache Pulsar Apache Pulsar 社区

95 后新生代 Committer 贺张俭:谈谈年轻人的开源观

Apache Pulsar

开源 云原生 物联网 Apache Pulsar Apache Pulsar 社区

《LeetCode刷题报告》题解内容Ⅰ

謓泽

3月月更

Apache ShardingSphere 首篇论文被 ICDE 收录,全球数据库发展迎来新局面

SphereEx

数据库 ShardingSphere SphereEx apache 社区

博文推荐|使用 Apache Pulsar 和 Scala 进行事件流处理

Apache Pulsar

开源 分布式 云原生 Apache Pulsar Apache Pulsar 社区

多云管理需求分析与好用的工具介绍

行云管家

云计算 混合云 多云 云管理

适合 Kubernetes 初学者的一些实战练习(二)

汪子熙

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

阿里代码依赖漏洞检测服务,高效杜绝代码安全隐患

阿里云云效

云计算 阿里云 云原生 代码安全 依赖漏洞检测

TypeScript 2.7 版本发布_JavaScript_Dylan Schiemann_InfoQ精选文章