TypeScript 5.1 正式发布


TypeScript 5.1 已正式发布。

重要变化

  • 更智能地检查未定义返回值的函数 (undefined-Returning Functions)

旧代码

function foo() {
// no return
}

// x = undefined
let x = foo();
//fine - we inferred that 'f1' returns 'void'
function f1() {
// no returns
}

//fine - 'void' doesn't need a return statement
function f2(): void {
// no returns
}

//fine - 'any' doesn't need a return statement
function f3(): any {
// no returns
}

//error!
// A function whose declared type is neither 'void' nor 'any' must return a value.
function f4(): undefined {
// no returns
}

新代码

//Works in TypeScript 5.1!
function f4(): undefined {
// no returns
}

//Works in TypeScript 5.1!
takesFunction((): undefined => {
// no returns
});
//Works in TypeScript 5.1!
takesFunction(function f() {
// ^ return type is undefined

// no returns
});

//Works in TypeScript 5.1!
takesFunction(function f() {
// ^ return type is undefined

return;
});
  • Getters 和 Setters 类型之间无限制

TypeScript 5.1 移除了 Get 访问器的返回类型必须可分配给其 Set 访问器类型 这一限制。

  • 携带命名空间的 JSX 标签

使用 JSX 时,TypeScript 现在支持命名空间属性名称。

import * as React from "react";

// Both of these are equivalent:
const x = <Foo a:b="hello" />;
const y = <Foo a : b="hello" />;

interface FooProps {
"a:b": string;
}

function Foo(props: FooProps) {
return <div>{props["a:b"]}</div>;
}
// In some library's code or in an augmentation of that library:
namespace JSX {
interface IntrinsicElements {
["a:b"]: { prop: string };
}
}

// In our code:
let x = <a:b prop="hello!" />;
  •  @paramJSDoc Tags 自动补全 Snippet

TypeScript 5.1 支持在 TypeScript 和 JavaScript 文件中输入 @param 标记时的代码片段完成,帮助开发者在编写代码文档或在 JavaScript 中添加 JSDoc 类型时快速生成对应注释信息。

  • JSX 元素和 JSX Tag 类型之间的解耦类型检查

TypeScript 使用 JSX 的一个痛点是它对每个 JSX 元素标签类型的要求。TypeScript 5.1 让 JSX 库可以更准确地描述 JSX 组件可以返回的内容。

对于许多人来说,这意味着可以在 React 中使用异步服务器组件。

其他变化

  • 支持在 Module Resolution 中查询 typeRoots
  • Linked Cursors for JSX Tags
  • 其他优化
  • 破坏性变更

自 RC 和 Beta 发布以来的变化

自 Beta 发布以来,开发团队已纠正装饰器中inithook的一些行为,社区提议的行为已经过调整。此外还对isolatedModules下的 emit 行为进行了更改,确保脚本文件不会被重写为模块。

这也意味着transpileModuleAPI 的使用也将确保脚本文件不会被解释为模块,因为它假定使用isolatedModules

自 RC 发布以来,开发团队对内置重构进行了轻微迭代,以将声明移至现有文件。

详情查看发布公告。


相關推薦

2023-04-20

TypeScript 5.1 发布了首个 Beta 测试版。 主要变化 更智能地检查未定义返回值的函数(undefined-Returning Functions) 旧代码 function foo() { // no return } // x = undefined let x = foo(); //fine - we inferred that 'f1' returns 'void' function f1() { // no return

2023-06-15

Angular 是一个基于 TypeScript 的开源前端框架,由 Google 的 Angular 团队以及社区共同领导,从 AngularJS 完全重写而成。 目前 Angular v16.1.0 已发布,带来如下变更: compiler fix:在 JIT 模式下读取编译输入转换元数据时出错 (#50600)

2022-11-17

Epic Games 近日正式发布了虚幻引擎 5.1 版本,该版本在 5.0 的基础上带来了更多的更新和改进,帮助用户更加轻松地创造出次世代实时 3D 内容和体验。我们的核心目标就是确保功能更强健、使用流程更友善、用途更广泛,并尽可

2022-10-23

groupId调整,由easy.ddd.domain 调整为cn.easylib 1.5.1版本正式推送至Maven中央仓库,使用更加方便 1.5.1修复了多处代码BUG,并增强了规则验证类的能力,支持快速失败验证和全部失败验证等 最新 jar包 maven坐标 <dependency>

2022-10-13

个集群中实时地、临时地、并行地进行查询。 CrateDB 5.1 正式发布,该版本更新内容如下: 注意事项:如果你正在升级一个集群,你必须在升级到 5.1.0 之前运行 CrateDB 4.0.2 或更高版本。我们建议你在升级到 5.1.0 之前,先升级

2022-06-21

https://www.citusdata.com/updates/v11-0 Citus 于3天前紧跟着 PG 14.4 正式释出 v11,把所有企业版的特性都开源了,当然最重要的特性就是在线平衡数据分区(自动平滑扩缩容),可谓功德无量。Pigsty立刻就把它给搞进 v1.5.1 了。有了 Citus

2022-10-10

虚幻引擎 5.1 发布了首个预览版,目前已在 Epic Games launcher 和 GitHub 仓库中提供下载。 5.1 预览版更新概要 虚幻引擎 5.1 改进了许多在 UE5 发布时提供的功能,为实时 3D 内容的创建创造了更加精简和易用的工作流程。此版

2023-08-11

KCL 是一个开源的基于约束的记录及函数语言并通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简

2022-07-24

FFmpeg 5.1“Riemann”已发布,FFmpeg 是一个开源多媒体项目,用于视频编码/解码和各种其他用途。 FFmpeg 5.1 的功能更改包括: NVIDIA 提供的 VDPAU AV1 硬件加速支持,可用于其最新的 RTX 30 系列显卡及更高版本。 AVIF 图像复用

2023-08-28

北京站,聊聊 AI 大模型与底层技术 >>> MooTool v1.5.1 已经发布,开发者常备桌面小工具 此版本更新内容包括: 二维码:支持从剪贴板识别 二维码:增加历史记录 应用:修复下载更新文件时进度条错误的问题 详情查看

2022-07-28

SQL —— 使用 PostgreSQL 作为数据库引擎。 目前 FerretDB 已发布 0.5.1 版本,带来如下变更: 新功能 验证数据库名称 #913 支持 $all 数组查询运算符 #724 支持 getLog 诊断命令 #711 为 Tigris 实现 MsgCount #928 支持explain诊断命令 #909

2022-06-07

Tails 5.1 已发布,此版本修复了此前宣布的 Firefox 和 Tor 浏览器的 JavaScript 引擎安全漏洞 ,并带来了一些功能更新。 更改和更新 Tor 连接助手 Tails 5.1 包括对 Tor 连接助手的许多改进: 如果选择自动连接到 Tor ,Tor 连接助手

2022-10-20

txtai 5.1 已发布,此版本为翻译管道添加了新的模型支持、在转录管道和 ARM Docker 镜像中支持 OpenAI Whisper、升级和改进主题建模,包括使用 BM25/TF-IDF 索引来驱动主题模型。 txtai 是一个人工智能驱动的搜索引擎,可以在文本的

2023-10-20

,相约开源PHP办公室,我们一起聊 AI!>>> Spring Batch 5.1 发布了首个 RC 版本。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处