【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:002121

评论

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

科兴未来|第七届“红船杯”嘉兴全球创业创新大赛开启报名

科兴未来News

数字经济 新能源 生物医药 新材料 高端装备

集群限流的两种模式

互联网架构师小马

Java 集群限流

业务与应用同步发展:应用现代化的策略建议

NGINX开源社区

透明LED显示屏报价方案

Dylan

方案 屏幕亮度 报价 像素 LED显示屏

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

互联网架构师小马

Java IDEA

积聚产业发展新动能|2023开放原子全球开源峰会OpenAtom OpenHarmony分论坛成功举办

开放原子开源基金会

开源 OpenHarmony 开放原子全球开源峰会 开放原子

科兴未来|第二届集成电路“太湖之芯”创业大赛,报名正式开始

科兴未来News

软件测试|超好用超简单的Python GUI库——tkinter

霍格沃兹测试开发学社

python 3.5+ GUI

与 NGINX 团队直接交流 | 微服务之月火热报名中

NGINX开源社区

nginx 微服务 运维

集群限流功能是如何实现的?

互联网架构师小马

Java sentinel 集群限流

架构训练营模块3作业——外包学生管理系统的架构文档

Geek_3d7c4d

#架构训练营

MaxCompute中如何处理异常字符

阿里云大数据AI技术

大数据 数据处理 企业号 6 月 PK 榜

弥合风险缺口 筑牢共享安全|2023开放原子全球开源峰会开源安全技术与实践分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源安全技术与实践

膜拜!Alibaba最新发布SprinBoot:进阶原理实战与面试题分析指南

互联网架构师小马

Java spring 微服务 Spring Boot 框架

开源赋能 工业铸魂|2023开放原子全球开源峰会开源工业软件分论坛圆满举行

开放原子开源基金会

开源 开放原子全球开源峰会 开源工业软件

大文件上传功能在标签服务的简单应用和代码实现

袋鼠云数栈

大数据 标签体系 企业号 6 月 PK 榜

【游戏行业部】重回游戏公平,向游戏打金工作室宣战!

网易智企

游戏 反外挂 游戏安全

热点参数限流功能的实现与流量效果控制

互联网架构师小马

局域网办公的重要性,如何选择企业IM即时通讯APP?

WorkPlus

假如你是CEO,遇到人才瓶颈又该如何破局?数智人力给您答案!

用友BIP

人力资源 数智人力

TG Pro for mac:Mac温度和风扇速度如何控制?

背包客

深度学习 macos Mac软件 MacBook Pro TG Pro for mac

知乎最具争议的Java面试成神笔记,GitHub已下载量已过百万

互联网架构师小马

Java java面试 Java八股文 Java面试题 Java面试八股文

GitHub收获70K+Star!阿里巴巴总结的「百亿级别并发设计手册」太香了

互联网架构师小马

Java 系统设计 高并发

HummerRisk 开发手册:Restful Api 使用

HummerCloud

开源 云原生 云安全

众多国央企专家齐聚一堂,探索财务共享未来模式

用友BIP

财务共享

内网IM即时通讯软件WorkPlus,快速连接工作的沟通利器

WorkPlus

openEuler 开源汇智赢未来|2023开放原子全球开源峰会OpenAtom openEuler 论坛成功召开

开放原子开源基金会

开源 openEuler 开放原子全球开源峰会 开放原子

软件测试/测试开发丨学习笔记之Python函数

测试人

Python 程序员 软件测试 自动化测试 函数

OpenInfra基金会在亚洲、欧洲正式设立运营中心

说山水

活动预约!华为云企业快成长大数据技术创新论坛成都站6月16日举行

说山水

浅析数智化转型深层次的挑战

用友BIP

数智平台

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