【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

Improvements of Job Scheduler and Query Execution on Flink OLAP

Apache Flink

大数据 flink 编程 实时计算 OLAP

CTF逆向涉及的各种加密算法

网络安全学海

网络安全 信息安全 CTF 渗透测试 漏洞挖掘

在线QuartzCron定时任务表达式在线生成

入门小站

工具

实战异地多活架构之王者荣耀商城

晨亮

「架构实战营」

Vue DevTools 使用指南 - 如何安装和使用 Vue DevTools 调试 Vue 组件

蒋川

Vue vue devtools

【PIMF】OpenHarmony啃论文成长计划——浅谈中间件

离北况归

中间件 OpenHarmony 啃论文

百度信誉保障服务架构全解析

百度Geek说

后端

数栈在湖仓一体上的探索与实践

袋鼠云数栈

数据库 大数据 数据湖 湖仓一体

在线JSON美化格式化工具

入门小站

工具

一起看看 Go 1.18 新特性之多模块工作区模式

宇宙之一粟

Go 语言 4月月更

【愚公系列】2022年04月 MinIO文件存储服务器-window11下的安装

愚公搬代码

4月月更

Ribbon从入门到源码解析

李子捌

微服务 SpringCloud Ribbon

一个公式告诉你:如何提升团队的研发效率?

凌晞

技术管理 研发效率

如何保证同事的代码不会腐烂?一文带你了解 阿里巴巴 COLA 架构

Zhendong

Java 架构 4月月更

融合通信常见问题3月刊 | 云信小课堂

网易云信

前端

React代码规范

Teobler

React 代码规范 编码规范 react规范

深入理解 Page Cache

swordholder

Linux Performance Linux Kenel PageCache

使用FFMPEG自动剪辑视频

十三

私有链还有未来吗?

CECBC

Linux之last命令

入门小站

Linux

活动预告 | OpenMLDB Meetup No.2

第四范式开发者社区

人工智能 机器学习 数据库 Meetup OpenMLDB

两步实现让antd与IDE和睦相处的处理案例

袋鼠云数栈

大数据 开源

基于 HTML+CSS+JS 的石头剪刀布游戏

海拥(haiyong.site)

html 大前端 游戏 4月月更

什么是元宇宙?为何要关注它?

CECBC

关于元宇宙热的冷思考

CECBC

每个计算机人才都应该知道的IP地址分类

喀拉峻

计算机基础 IP

ffmpeg实现web在线转码

lo

4月月更

龙蜥开源Plugsched:首次实现 Linux kernel 调度器热升级 | 龙蜥技术

OpenAnolis小助手

Linux 内核 龙蜥社区 Plugsched

netty系列之:netty中的核心MessageToMessage编码器

程序那些事

Java Netty 程序那些事 4月月更

Web 3.0的未来产业趋势

王强

Web 3.0

墨水屏的“硬伤”与福气

脑极体

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