TypeScript 5.1发布,新功能更新

文章目录

      • 1:返回类型增加undefined
      • 2:getter可以设置和 setter 的不相关类型
      • 3:对 JSX 元素和 JSX 标签的异步支持
      • 4:支持命名空间属性名称 JSX
      • 5:typeRoots在模块更新
      • 6:JSX 标签的链接游标
      • 7:@param JSDoc 标签的代码段补全
      • 8:优化/重大变化部分

1:返回类型增加undefined

type fun = () => undefined;

这里设置了一个别名 fun,当时使用它的时候,我们必须显示返回一个 undefined

const f: fun = () => {return undefined;
};
f();

现在你可以直接设置返回类型:

const f: fun = ():undefined => {
};
f();

而不仅限于 void any

4.3版本:❌
5.1版本:✅

在这里插入图片描述

2:getter可以设置和 setter 的不相关类型

const point = {get value(): number {return 0;},set value(value: string) {}
};
point.value = '888'; 
console.log(point.value); 

在之前版本,get 返回类型应该为 set 的子类型,如下:

const point = {get value(): number {......},set value(value: string|number) {}
};

在新版本 5.1 中,宽松了这种约束。

4.3版本:❌
5.1版本:✅

在这里插入图片描述
但是,您应该设置注释,否则您可能会向他人表达错误的解释。

3:对 JSX 元素和 JSX 标签的异步支持

我们看下 React 对 JSX 类型的部分定义:

namespace JSX {// 用于普通的HTML元素interface IntrinsicElements {// 为每一个HTML元素提供了对应的属性// ...// 其他HTML元素}// 用于React组件interface Element extends React.ReactElement<any, any> { }interface ElementClass extends React.Component<any> {render(): React.ReactNode;}interface ElementAttributesProperty { props: {}; }interface ElementChildrenAttribute { children?: {}; }// ...
}

typecript 总是通过 JSX.Element 来判断 JSX 的类型,而React 的未来版本可能会对返回 Promises 的组件提供有限的支持。

所以为了解决这个问题,typescript 5.1 增加了新属性 ElementType ✅,以供用户指定返回的具体的异步组件类型。

如果不是很理解,你可以把它当成一种约定:“我为了适应你,我们共同创建一个新的约定。”

“真好,我感到孤单了,或许可能我应该得到一个拥抱的”

4:支持命名空间属性名称 JSX

使用 JSX 时,ts 支持了以下写法:a:b

// ✅
<Foo a:b="hello" />

5:typeRoots在模块更新

typeRoots 的主要作用是告诉 TypeScript 编译器在哪些目录下查找类型定义文件(.d.ts 文件)。

默认情况下会查找node_modules/@types目录下的.d.ts文件。

如:

{"compilerOptions": {"typeRoots": ["node_modules/@types"],...}
}

4.3版本:❌

  1. 仅可以解析为目录

5.1版本:✅

  1. 可以解析为目录或文件(如果这里解释有误,劳烦通知我纠正,感谢)

->详细内容请看这里<-

6:JSX 标签的链接游标

这里的更新功能主要是针对于 vscode 的。其他工具应该也包含该功能。

在这里插入图片描述

  1. 使用快捷键 Ctrl+, (ctrl加逗号)
  2. 输入Linked Editing
  3. 找到 “Editor: Linked Editing” 这个选项,然后勾选它

7:@param JSDoc 标签的代码段补全

8:优化/重大变化部分

  1. 避免不必要的类型实例化
  2. 联合文字的否定案例检查
  3. 减少对扫描器的调用以进行 JSDoc 解析
  4. ES2020 和 Node.js 14.17 作为最低运行时要求
  5. 明确typeRoots禁用向上行走node_modules/@types

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8397.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP:查询数据库,并将数据传给前端(在script中直接嵌套php语句)

例子&#xff1a;在php中定义数据&#xff0c; 并将数据通过js在控制台输出 <script><?php// 在这里插入你的PHP代码&#xff0c;例如执行查询操作获取数据$data array(array(name > Alice, age > 25),array(name > Bob, age > 30),array(name > Ch…

4.39ue4:ue4表格设置、读取

1.创建表格&#xff0c;内容浏览器&#xff0c;右键&#xff0c;其他&#xff0c;数据表格&#xff0c;下拉选择一个数据结构类型的起始项。 2.被选择的数据结构将以表格的形式列出数据。 3.使用方式&#xff1a; i: 输出一行数据&#xff08;text&#xff09; ii&#xff…

SparkSQL的数据结构DataFrame构建方式(Python语言)

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据&#xff0c;其提供了两个操作SparkSQL的抽象&#xff0c;分别是DataFrame和DataSet&#xff0c;spark2.0之后&#xff0c;统一了DataSet和DataFrame&#xff0c;以后只有DataSet。 以Python、R语言开发Spark&#xff0c;使…

SpringBoot 的 概念、创建和运行

目录 1.什么是Spring Boot&#xff1f; 为什么要学Spring Boot&#xff1f; SpringBoot的优点 Spring Boot 项目创建 前置工作&#xff1a;配置国内源 使用 idea 创建 Spring Boot 项目 网页版创建&#xff08;了解&#xff09; 拓展&#xff1a;删除 项目中无用的目录和…

quiche编译

netty http3使用了rust语言的quiche&#xff0c;quiche使用了c语言的boringssl&#xff0c; 网上没有找到编译好的quiche&#xff0c;只能自己搭建rust环境编译 1、rust安装 见官网https://www.rust-lang.org/tools/install 我是用的是windows的ubuntu&#xff0c;所以直接使…

web学习--maven--项目管理工具

写在前面&#xff1a; 这学期搞主攻算法去了&#xff0c;web的知识都快忘了。开始复习学习了。 文章目录 maven介绍功能介绍maven安装jar包搜索仓库 pom文件项目介绍父工程依赖管理属性控制可选依赖构建 依赖管理依赖的传递排除依赖可选依赖 maven生命周期分模块开发模块聚合…

debian linux安装配置企业私有网盘

一、适用环境 1、中小型企业的某些部门之间经常要进行数据的交换与共享时&#xff0c;则可使用企业内部专业的服务器&#xff0c;把剩余的硬盘存储容量配置成为共享网盘的形式&#xff0c;供部门之间进行数据交换。 2、可将多个硬盘通过debian Linux系统组成软阵列的1个逻辑盘…

【Matlab】神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值

目前关于神经网络遗传算法函数极值寻优——非线性函数求极值的博客资源已经不少了&#xff0c;我看了下来源&#xff0c;最初的应该是来自于Matlab中文论坛&#xff0c;论坛出版的《MATLAB神经网络30个案例分析》第4章就是《神经网络遗传算法函数极值寻优——非线性函数极值寻优…

一次源码编译安装PostgreSql失败

需要perl&#xff1b;之前博文已提到&#xff1b;之前有一种编程语言叫perl&#xff0c;此perl应该不是那个&#xff1b;可到其官网下载&#xff0c;Perl Download - www.perl.org 安装时添加到环境变量&#xff1b; 可能是一个东西&#xff1b;有编程语言和工具&#xff1b;大…

Python爬虫使用代理IP的实现

使用爬虫时&#xff0c;如果目标网站对访问的速度或次数要求较高&#xff0c;那么你的 IP 就很容易被封掉&#xff0c;也就意味着在一段时间内无法再进行下一步的工作。这时候代理 IP 能够给我们带来很大的便利&#xff0c;不管网站怎么封&#xff0c;只要能找到一个新的代理 I…

在 TypeScript 中有效地使用 keyof 和 typeof 来表示类型

在本文中&#xff0c;我们将学习如何通过组合类型运算符和枚举来提取和声明常量类型typeof&#xff0c;以使您的代码库得到优化。keyof 先决条件 为了获得更好的编码体验&#xff0c;您应该在 IDE 中安装 TypeScript&#xff0c;例如VSCode。它将为您提供许多基本功能&#xff…

MySQL的基本语法

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于MySQL的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.数据库&#xff08;建立&#xff0c;查…