typescript索引类型-TypeScript 4.1 发布,新的模板文字类型

TypeScript 团队发布了 TypeScript 4.1typescript索引类型,其中包括强大的模板文字类型、映射类型的键重新映射以及递归条件类型。

模板文字类型得到了社区的热烈响应。 这项新功能提供了将普通字符串文字类型用作其他类型定义的能力,这使得创建和执行模板语法变得容易。

模板字符串文字还可以根据模板字符串中的替换位置动态生成和推导。 为了进一步支持模板字符串文字,TypeScript 还添加了用于更改字母大小写的新实用程序类型别名:大写、小写、大写和取消大写。

社区提供了许多有趣的模板字符串文字示例,包括 querySelector、路由器参数解析、表达式解析、JSON 解析和序列化、GraphQL 类型的 AST、SQL 查询验证、CSS 解析、游戏、拼写检查等。

Haskell 和 PureScript 具有类似的功能,现在 TypeScript 也支持它们。

TypeScript 4.1 还通过添加键重新映射来改进映射类型。 曾经仅限于具有已知键的新对象类型的映射类型现在支持创建新键或过滤现有键。

TypeScript 4.1 的另一个重要新增功能是递归条件类型,它可以更轻松地支持链表或复杂 Promise 树的扁平化。 条件类型现在可以立即在分支中引用自身,从而更轻松地创建递归类型别名。 TypeScript 团队警告说,应谨慎使用此模式typescript索引类型,以防止减慢递归类型检查的速度,并且如果超出支持的递归深度,TypeScript 编译器将引发编译时错误。

TypeScript 4.1 添加了新的编译器标志

--noUncheckedIndexedAccess,用于识别潜在的未定义属性。 此新功能不会手动包含在 --strict 标志中,因为它会更改某些常见场景中的行为,例如迭代 for 循环的索引时。

React17用户有两个新的JSX选项可以更好地支持生产和开发编译,即react-jsx和react-jsxdev。

升级到 TypeScript 4.1 时,需要考虑以下主要变化:

TypeScript 4.2 的工作已经在进行中,预计将于 2021 年 2 月完成。TypeScript4.2 的内容包括通用索引签名、元组类型中的前/中剩余元素、--noImplicitOverride、

--noPropertyAccessFromIndexSignature、静态索引签名、typeofclass、更快的编译时迭代以及进一步的编辑器和生产力改进。

TypeScript 采用 Apache2 开源许可证。 欢迎开发者通过 TypeScript GitHub 项目做出贡献并提供反馈,并遵守 TypeScript 贡献手册和 Google 的开源行为准则。

原文链接:

TypeScript4.1添加TemplateLiteralTypes