写点什么

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

评论

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

创新服务模式探索:海外网红营销服务公司的转型升级趋势

Wolink

跨境电商 电商营销 海外社媒营销 海外营销推广 海外红人营销

品牌出海战略解码:从中国品牌到全球品牌的进化路径

Wolink

跨境电商 品牌营销 出海企业 品牌出海 品牌推广

骁龙大赛技术分享第4期来了——直播问题&答疑整理

极市平台

海外平台推广算法解读:如何让平台算法为你精准推送流量

Wolink

跨境电商 海外社媒营销 海外营销推广 海外推广 海外红人营销

SSL证书申请与安装全攻略:关键注意事项深度解析

防火墙后吃泡面

总奖金超40万!高德空间智能开发者大赛开启报名和作品提交通道

高德开放平台

人大 DeepAnalyze 免费体验通道开启!上传数据,坐等报告!

ModelWhale

人工智能 数据分析 大模型 DeepAnalyze

蚂蚁数科跻身中国AI智能体开发平台“领导者”阵营

Lily

校二叔校园外卖社区小程序系统 :一站式校园生态解决方案

微擎应用市场

案例宝公众号管理系统:全行业客户案例管理神器,高效转化成交好帮手

微擎应用市场

CAD图纸闪退、打不开?快来试试CAD图纸清理?

在路上

cad cad看图 CAD看图王

如何运用 Scrum 打造一个高绩效的团队

ShineScrum

Scrum 高绩效团队

《独立开发者精选工具》第 023 期

Immerse

cURL 8.17.0 发布:安全修复、功能变更与未来展望

qife122

curl 开源软件

「开发者扶持计划」正式上线,MemOS 云平台全面免费!

记忆张量MemTensor

MemOS 记忆管理 记忆张量

鸿蒙手机打开开发者模式

lichong951

HarmonyOS HarmonyOS NEXT

星畅家政小程序系统:一站式家政服务数字化解决方案

微擎应用市场

光伏策略控制服务器是什么?核心功能与系统定位详解

西格电力

分布式光伏并网 分布式光伏发电 分布式光伏 分布式光伏产品 光伏策略控制服务器

RelativeLayout 根布局里有一个子布局预期一直展示,但子布局RelativeLayout被 覆盖了

lichong951

android Android Studio

KOL营销ROI提升秘籍:5个关键指标衡量投资回报率

Wolink

跨境贸易 出海 海外社媒营销 海外营销推广 海外红人营销

CAD图纸如何批量打印?CAD批量打印教程来了

在路上

cad cad看图 CAD看图王

数据交换机案例详解|基于smardaten实现智慧园区数据处理与分析

数睿数据

智慧园区 smardaten 数睿数据

转卖分佣商城小程序系统:一站式移动营销解决方案

微擎应用市场

海外网红营销服务公司评估指南:5大维度筛选优质合作伙伴

Wolink

出海 海外社媒营销 海外营销推广 海外红人营销 品牌推广

品牌出海组织变革:构建支持全球化业务的敏捷团队架构

Wolink

跨境电商 出海企业 品牌出海 海外红人营销 品牌推广

harmonyos 大屏设备怎么弹出 u 盘

lichong951

当销售额下降时,ChatBI 如何实现多维下钻、归因分析?

Aloudata

数据分析 归因分析 ChatBI 智能问数 dataagent

Agent如何重塑跨角色协作的AI提效新范式

Comate编码助手

AI 编程 文心快码 编程智能体

非凸科技与九方智投达成战略合作,携手赋能广大投资者

非凸科技

2026年KOL营销新趋势:AI技术如何改变品牌合作模式

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

区域市场深度渗透:东南亚海外网红推广的本地化实战策略

Wolink

跨境贸易 出海 海外营销推广 品牌出海 海外红人营销

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