写点什么

TypeScript 2.9 发布,更新了对 ES.Next 的支持

  • 2018-06-06
  • 本文字数:1449 字

    阅读完需:约 5 分钟

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

TypeScript 2.9 包含多项针对该语言的改善。现在,能够支持 ES.Next 的 import.meta,同时支持keyof和映射对象类型中的符号与数字字面量。

目前,ES.Next import.meta 是一个 stage 3 的提案,预期将会包含在 ES2019 中。该特性允许宿主环境提供模块特定的有用信息,用来在模块中执行。TypeScript 2.9 包含了对 import.meta 的支持。

TypeScript 的项目主管 Daniel Rosenwasser 认为在 TypeScript 2.9 之前,导入类型是一项很具挑战性的事情:

长期以来,在 TypeScript 中无法在其他模块中引用某个类型或者模块本身的类型,这是一件很痛苦的事情,除非我们在文件的顶部包含一个导入语句。在有些场景下,这是一个便利性的问题——我们可能并不希望仅仅因为要描述用到某个类型,就需要在自己的文件上添加一个 import 语句。

TypeScript 2.9 解决了这个问题。不再需要导入一个模块,只需检索类型的定义即可,在 2.9 之前,需要这样编写:

复制代码
import * as _foo from "foo";
export async function bar() {
let foo: typeof _foo = await import("foo");
}

现在,工程师可以按需导入类型:

复制代码
export async function bar() {
let foo: typeof import("./foo") = await import("./foo");
}

TypeScript 2.9 的其他变化是与 ECMAScript 标准保持一致。在 TypeScript 2.9 中,在 rest 参数之后(即…rest 格式的参数 - 译者注)不允许以逗号作为结尾,这样是为了与 ECMAScript 标准保持一致。泛型标记模板(generic tagged template)中可以使用类型参数,这样的话与 ES2015 的模板协作使用就更加容易了。

除了与 ES.Next 保持一致,TypeScript 2.9 发布版本还提升了在其他环境中的开发体验,包括 Node.js 和 React。

希望使用 ES 模块来导入 JSON 文件的 Node.js 工程师现在可以这样做了,要达到目的需要将模块解析(moduleResolution)指定为 Node 并将--resolveJsonModule标记设置为 true。

使用 React JSX 语法的用户现在能够解析并检查 JSX 开放和自关闭标签的类型参数,在此之前,这是 TypeScript 支持 JSX 中的一个限制。

将新的--declarationMap标记与--declaration标记联合使用时,允许 TypeScript 在输出.d.ts文件时,生成.d.ts.map源映射(source map)文件。TypeScript 语言服务(Language Service)能够基于位置定义的声明文件匹配它们的原始源。

TypeScript 2.9 中添加的另外一项重要特性是在keyof和映射对象类型(mapped object type)中使用符号(symbol)和数字字面量。keyof 操作符要比 TypeScript 推断唯一符号类型这一特性更早,因此keyof一直不能识别符号化的 key。

TypeScript 2.9 改变了keyof的行为,能够识别唯一符号和数字字面量类型。因为这是一个破坏性的变更,所以可以通过--keyofStringsOnly标记切换回 TypeScript 2.9 版本之前的行为模式。

另外一个需要注意的破坏性的变更是在使用strictNullChecks模式时,没有限制的类型参数不允许赋值给 object,因为泛型类型参数可能会被任意的原始类型替换。

在 TypeScript 2.9 发布版本中还包含了诊断和语言服务的一些改善,以及其他的一些重构服务,比如将私有字段转换为 getter 和 setter 语义,将 TypeScript 文件中的 require 转换为 ES 的导入语句。

TypeScript 2.9 现在能够基于 Apache 2 许可证协议来获取,可以通过 npm 的npm install -g typescript命令来安装。欢迎通过 TypeScript GitHub 项目进行贡献和反馈。

查看英文原文: TypeScript 2.9 Release Updates ES.Next Support

2018-06-06 16:041776

评论

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

分布式事务的性能设计

穿过生命散发芬芳

分布式事务 7月月更

长安链学习研究-存储分析wal机制

长安链

现场可程式化逻辑闸阵列 FPGA

贾献华

7月月更

【Docker 那些事儿】容器网络(下篇)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

一款强大的mock数据生成工具

Xd

C++ Workflow异步调度框架 - 性能优化网络篇

1412

c++ 开源 workflow 异步调度 网络框架

群里的初级工程师求助说,要采集采招数据,必须给他安排上

梦想橡皮擦

Python 爬虫 7月月更

你学会如何将项目部署到Linux系统上了吗?要不我带你耍耍。

Java学术趴

7月月更

【算法社区】查找算法大全(hash、avl、bst、队列)

小明Java问道之路

二分查找 hash 查找 7月月更 BST

uni-app进阶之自定义【day13】

恒山其若陋兮

7月月更

Qt | 控件之QComboBox

YOLO.

qt 7月月更

使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

秃头小苏

7月月更 kitti

Python 迭代器介绍及其作用

宇宙之一粟

Python 迭代器 7月月更

Linux tar打包

工程师日月

Linux tar 7月月更

Istio XDS配置生成实现

阿泽🧸

envoy 7月月更

Vue3 状态管理 Pinia 快速入门指南

程序员海军

Vue 状态管理 7月月更

ArkUI开发框架组件的生命周期详解

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

Mysql 温故知新系列「触发器详解」

安逸的咸鱼

MySQL 7月月更

python文件操作知多少

迷彩

Python基础 文件操作 7月月更

排序子序列与倒置字符串

未见花闻

7月月更

linux之realpath命令

入门小站

Linux

在线摇骰子色子工具

入门小站

工具

【萌新解题】四数之和

面试官问

LeetCode

实习是步入社会的一道坎

KEY.L

7月月更

Setup的使用技巧

bo

Vue 前端 7月月更

Vscode 搭建 C / C++ 开发环境

攻城狮杰森

c c++ vscode 开发环境 7月月更

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

地下地上

架构实战营

Zabbix 6.0 源码安装以及 HA 配置

耳东@Erdong

zabbix ha 7月月更 zabbix 6.0

模块1 作业

如何在Linux中比较多个文件?这12个优秀工具了解一下!

wljslmz

Linux 7月月更 文件比较

zookeeper-watcher的javaApi相关使用

zarmnosaj

7月月更

TypeScript 2.9发布,更新了对ES.Next的支持_JavaScript_Dylan Schiemann_InfoQ精选文章