TypeScript 团队发布了 TypeScript 4.1,其中包括强大的模板文字类型、映射类型的键重新映射以及递归条件类型。
模板文字类型得到了社区的热烈响应。 这项新功能提供了使用普通字符串文字类型作为其他类型的定义的能力,从而可以轻松创建和执行模板语句。
模板字符串文字还可以根据模板字符串中的替换位置动态生成和计算。 为了进一步支持模板字符串文字,TypeScript 还添加了用于更改字母大小写的新实用程序类型别名:大写、小写、大写和取消大写。
社区提供了许多有趣的模板字符串文字示例typescript 获取 post 参数,包括 querySelector、路由器参数解析、表达式解析、JSON 解析和序列化、GraphQL 类型 AST、SQL 查询验证、CSS 解析、游戏、拼写检测等。
Haskell 和 PureScript 具有类似的功能,现在 TypeScript 也支持它们。
TypeScript 4.1 还通过添加键重新映射来改进映射类型。 映射类型曾经仅限于具有已知键的新对象类型,现在支持创建新键或过滤现有键。
TypeScript 4.1 中的另一个重要新功能是递归条件类型,它可以更轻松地支持链表或复杂 Promise 树的扁平化。 条件类型现在可以在分支中立即引用自身,从而更轻松地创建递归类型别名。 TypeScript 团队警告说,应谨慎使用此模式,以避免减慢递归类型检查速度,并在超出支持的递归深度时导致 TypeScript 编译器抛出编译时错误。
TypeScript 4.1 添加了一个新的编译器标志 noUncheckedIndexedAccess,以识别潜在的未定义属性。 此新功能不会手动包含在 --strict 标志中,因为它会更改某些常见场景中的行为,例如迭代 for 循环的索引时。
React17用户有两个新的JSX选项可以更好地支持生产和开发编译,即react-jsx和react-jsxdev。
升级到 TypeScript 4.1 时,需要考虑几个主要变化:
与 TypeScript 4.2 相关的工作已经在进行中,预计将于 2021 年 2 月完成。TypeScript 4.2 包括通用索引签名、元组类型中的第一个/中间剩余元素、--noImplicitOverride、--noPropertyAccessFromIndexSignature、静态索引签名、typeofclass、更快编译时迭代typescript 获取 post 参数,以及编辑器和生产力的进一步改进 改进。
TypeScript 采用 Apache2 开源许可证。 欢迎开发者通过 TypeScript GitHub 项目做出贡献并提供反馈,并遵守 TypeScript 贡献手册和 Google 开源行为准则。
原文链接:
TypeScript4.1添加TemplateLiteralTypes