写点什么

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

评论

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

快速安全的将 Azure SQL 迁移到云原生数据库 Amazon Aurora

亚马逊云科技 (Amazon Web Services)

数据库 云原生

数字化转型-数据资产管理

小鲸数据

数据资产 数字化 数据价值 数据管理 数据资产管理

做好产品手册,发现优质顾客

Baklib

单链表头插法,尾插法,循环链表,(线性表单链表)

IC00

c 链表 数据结构, 9月月更

接口测试项目实战与经典面试题解析,挑战 BAT 大厂必会!

霍格沃兹测试开发学社

DolphinScheduler&RocketMQ 联合 Meetup 即将重磅开启,集中展示任务调度与消息队列能力!

阿里巴巴云原生

阿里云 RocketMQ 云原生 DolphinScheduler

万字长文!教你如何拆解一款 App

产品海豚湾

产品经理 产品设计 竞品分析 B端产品 9月月更

亮点抢先看|StarRocks Summit Asia 2022 全议程公布!

StarRocks

数据库

编辑FAQ常用问题网页的Tips

Baklib

走向云原生数据库,告别 Microsoft SQL Server,迎接 Babelfish

亚马逊云科技 (Amazon Web Services)

数据库 云原生

挑战30天学完Python:Day2 夯实基础-变量和内置函数

MegaQi

9月月更 挑战30天学完Python

C++学习------csetjmp头文件的源码学习

桑榆

c++ 源码阅读 9月月更

【vue3】vue3-组合式API中实现深拷贝

Sam9029

Vue 深拷贝 9月月更

车载生态安全怎样靠小程序技术运转

Geek_99967b

小程序 车联网

EMQ亮相服贸会:夯实IoT数字底座,加速迈向工业4.0时代

EMQ映云科技

物联网 IoT 工业4.0 服贸会 9月月更

做好企业的内部知识管理的方法

Baklib

SpringFramework初识

十八岁讨厌编程

spring 后端 9月月更

【从零开始学爬虫】采集谷歌网页列表数据

前嗅大数据

大数据 数据采集 爬虫软件 爬虫教程 互联网+

[MyBatisPlus]标准数据层开发(CRUD、分页)

十八岁讨厌编程

Java 后端开发 9月月更

跟着卷卷龙一起学Camera--AE

卷卷龙

ISP 9月月更

系统设计 - 高可用思想简介

三叶草

高可用 SLA 高可用设计

[SpringBoot系列]基础过渡与夯实(基础配置)

十八岁讨厌编程

Java 后端开发 9月月更

【JS】DOM键盘事件--div元素-设置键盘事件--失效的额外处理踩坑

Sam9029

JavaScript DOM 9月月更 键盘事件

ChatOps新型运维协作介绍

阿泽🧸

ChatOps 9月月更

系统实战-逻辑多租服务的高并发调优

三叶草

性能优化 高性能,

接口测试该怎么做?持证上岗的Charles,可以帮你做什么?

霍格沃兹测试开发学社

接口管理工具YApi怎么用?颜值高、易管理、超好用

霍格沃兹测试开发学社

Java进阶(十七)ArrayList与LinkedList的区别

No Silver Bullet

Java ArrayList linkedlist 9月月更

2022-09-13:给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽。 同时给你一个二维整数数组 prices ,其中 prices[i] = [hi, wi, pricei] 表示你可以

福大大架构师每日一题

算法 rust 福大大

测试需求平台4-Flask实现API服务入门实战

MegaQi

测试平台开发教程 9月月更

关于CMDB建设思路的一点思考

穿过生命散发芬芳

CMDB 9月月更

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