广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >那些项目中常见的TypeScript错误总结
  • 621
分享到

那些项目中常见的TypeScript错误总结

2024-04-02 19:04:59 621人浏览 独家记忆
摘要

目录引言1.TS24562.TS25543.TS11694.TS23455.TS25896.TS2322总结引言 typescript 错误信息由错误码和详细信息组成。例如:TS24

引言

typescript 错误信息由错误码和详细信息组成。例如:TS2456 ,其中错误码是以“TS”开头 + 数字(一般是 4 位数字)结尾这样的格式组成的字符串,用来作为特定类型错误的专属代号。下面我们看一下那些常⻅,但在官方文档甚少提及的类型错误:

1.TS2456

首先是由于类型别名循环引用了自身造成的 TS2456 类型错误,如下示例: 

 type T = Readonly<T>;
// TS2456: Type alias 'T' circularly references itself.

在上面这个例子中,对于 T 这个类型别名,如果 TypeScript 编译器想知道 T 类型是什么,就需要展开类型别名赋值的 Readonly 。而为了确定 Readonly 的类型,TypeScript 编译器需要继续判断入参 T 的类型,这就形成了一个循环引用,类似函数循环调用自己,如果没有正确的终止条件,就会一直处于无限循环的状态,所以就会报错。

2.TS2554

另一个常⻅的错误就是TS2554,它是由于形参和实参个数不匹配造成的,如下:

function test(a: number | undefined): string {
  if (a=== undefined) {
   return '';
             }
  return a.toString();
}
test(); // TS2554: Expected 1 arguments, but Got 0.
test(undefined);

之所以会报错是因为在 ts 中,undefined 是一个特殊的类型,由于类型为 undefined,并不代表可 缺省,因此示例中的第 8 行提示了 TS2554 错误。

3.TS1169

TS1169 类型错误是在接口类型定义中由于使用了非字面量或者非唯一 symbol 类型作为属性名造成 的,如下:

 interface Obj {
   [key in 'id' | 'name']: any; // TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
};

因为interface 类型的属性必须是字面量类型(string、number) 或者是 unique symbol 类型,所以 在第 2 行提示了 TS1169 错误。

4.TS2345

TS2345 类型错误的原因在于传参时由于类型不兼容造成的,如下:

enum A {
   x = 'x',
   y = 'y',
   z = 'z',
}
enum B {
   x = 'x',
   y = 'y',
   z = 'z',
}
function fn(val: A) {}
fn(B.x); // TS2345: Argument of type 'B.x' is not assignable to parameter of type 'A'.    ;

如上所示,函数 fn 参数的 val 类型是枚举 A,在 12 行我们传入了与枚举 A 类似的枚举 B 的值,此时 ts 提示了类型不匹配的错误。这是因为枚举是在运行时真正存在的对象,因此 ts 并不会判断两个枚举是否可以互相兼容,所以报错。解决这个错误的方式也很简单,我们只需要让这两个枚举类型互相兼容就行,比如使用类型断言绕过 ts 的类型检查(fn((B.x as unknown) as A);)即可。

5.TS2589

TS2589 类型错误是由泛型实例化递归嵌套过深造成的,如下:

type RepeatX<N extends number, T extends any[] = []> = T['length'] extends N?T: RepeatX<N, [...T, 'X']>;
type T1 = RepeatX<5>; // => ["X", "X", "X", "X", "X"]
// TS2589: Type instantiation is excessively deep and possibly infinite.    

因为第 1 行的泛型 RepeatX 接收了一个数字类型入参 N,并返回了一个⻓度为 N、元素都是 'X' 的数组类型,所以第 4 行的类型 T1 包含了 5 个 "X" 的数组类型;但是第 6 行的类型 T2 的类型却是 any,并且提 示了 TS2589 类型错误。这是因为 ts 在处理递归类型的时候,最多实例化 50 层,如果超出了递归层数的 限制,ts 便不会继续实例化,并且类型会变为 top 类型 any。 对于上面的错误,我们使用 @ts-ignore 注释忽略即可。

6.TS2322

TS2322 错误是由于字符串字面量类型定义时导致的错误,如下:

interface CSSProperties {
   display: 'block' | 'flex' | 'grid';
 }
const style = {
   display: 'flex',
};
// TS2322: Type '{ display: string; }' is not assignable to type 'CSSProperties'.
// Types of property 'display' are incompatible.
// Type 'string' is not assignable to type '"block" | "flex" | "grid"'.
const cssStyle: CSSProperties = style;  

在上面的例子中,CSSProperties 的 display 属性的类型是字符串字面量类型 'block' | 'flex' | 'grid',虽然变量 style 的 display 属性看起来与 CSSProperties 类型完全兼容,但是 TypeScript 提示了 TS2322 类型不兼容的错 误。这是因为变量 style 的类型被自动推断成了 { display: string },string 类型自然无法兼容字符串字面量类型 'block' | 'flex' | 'grid',所以变量 style 不能赋值给 cssStyle。

以上六种便是项目开发中比较常见的几种错误类型,如果你想查看所有的错误信息和错误码,可以浏览TypeScript 的源代码仓库,当然,随着 ts 版本的更新,官网也会逐渐增加更多新的类型错误。

总结

到此这篇关于常见的TypeScript错误总结的文章就介绍到这了,更多相关常见的TypeScript错误内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 那些项目中常见的TypeScript错误总结

本文链接: https://www.lsjlt.com/news/142946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 那些项目中常见的TypeScript错误总结
    目录引言1.TS24562.TS25543.TS11694.TS23455.TS25896.TS2322总结引言 TypeScript 错误信息由错误码和详细信息组成。例如:TS24...
    99+
    2022-11-13
  • 总结一些html开发中常见的错误
    很多人都曾经遇到过编写网页时出现HTML代码错误的情况,这种错误如果不及时处理,会导致网页无法正常显示或出现其它问题,给用户带来不良体验。因此,在编写HTML代码时,我们需要注意一些常见的错误,并及时进行修复。首先,常见的HTML代码错误包...
    99+
    2023-05-14
  • 常见的socket error错误总结
    常见的socket error错误总结如下:1. ConnectionRefusedError:连接被拒绝。可能是目标主机拒绝了连接...
    99+
    2023-08-24
    错误
  • ASP.NET学习中常见错误总结归纳
    目录前言下拉框绑值绑值GridView删除数据修改修改赋值到另外一个页面修改赋值到另外一个页面绑定值换页不报错前言 自己在学习.NET中常犯的错误(持续更新) 下拉框绑值 p...
    99+
    2022-11-12
  • TypeScript在React项目中的使用实践总结
    序言 本文会侧重于TypeScript(以下简称TS)在项目中与React的结合使用情况,而非TS的基本概念。关于TS的类型查看可以使用在线TS工具👉TypeScri...
    99+
    2022-11-12
  • 总结PHP的一些常见错误和提示信息
    PHP是广泛使用的语言,许多网站和应用程序都使用它来实现功能和交互性。然而,PHP作为一种解释性语言,在代码编写和运行时会面临各种问题,特别是错误和异常的情况。在本文中,我们将介绍PHP的一些常见错误和提示信息,并提供关于如何解决这些问题的...
    99+
    2023-05-14
  • 【总结】iis7上常见的php错误提示
    PHP是一种非常流行的服务器端脚本语言,经常用于Web开发中。而IIS7则是一个非常流行的微软的Web服务器。在PHP运行于IIS7之上时,有时候可能会遇到错误提示,这篇文章将探讨一些常见的错误提示以及如何解决这些问题。FastCGI安装问...
    99+
    2023-05-14
    iis php
  • JS使用Promise时常见的5个错误总结
    目录1.避免 Promise 地狱2.在 Promise 中使用 try/catch 块3.在 Promise 块内使用异步函数4.在创建 Promise 后立即...
    99+
    2022-11-13
    JS Promise 错误 JS Promise Promise 错误
  • 总结Golang编程时常见的错误和问题
    Golang(又称 Go)是一种相对较新的编程语言,逐渐受到了越来越多人的欢迎。尽管 Golang 与早期的编程语言有许多不同之处,但其出现的初衷一直都是为了方便程序员进行编写和管理高效的代码。在使用 Golang 进行编程时,有一些常见的...
    99+
    2023-05-14
  • golang项目中有哪些常见的数据结构
    本篇文章为大家展示了golang项目中有哪些常见的数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾...
    99+
    2023-06-06
  • 【总结】GitLab常见的推送错误和解决方案
    在使用Git版本控制工具的过程中,难免会遇到一些问题。其中一个常见的问题是GitLab推送报错。当你尝试将本地代码推送到远程仓库时,可能会遇到各种推送错误,例如“rejected non-fast-forward”、“failed to p...
    99+
    2023-10-22
  • PHP中常见错误类型及其解决方法【总结】
    PHP是一门广泛应用于Web开发、服务器脚本编程的编程语言,具有易学易用、扩展性强、高效稳定等优点。但是在PHP开发过程中,程序员难免会遇到各种各样的错误,下面我们来看一下PHP中常见的错误类型及其解决方法。1. 语法错误语法错误是最常见的...
    99+
    2023-05-14
    php
  • 关于Spring的@Autowired依赖注入常见错误的总结
    做不到雨露均沾 经常会遇到,required a single bean, but 2 were found。 根据ID移除学生 DataService是个接口,其实现依赖Oracl...
    99+
    2022-11-12
  • MySQL 那些常见的错误设计规范,你都知道吗
    依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯。同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论。 但是过于方便的分享也让知识变得五花八门,很...
    99+
    2022-05-30
    MySQL 错误设计规范 MySQL 设计规范
  • Vue项目中常用的实用技巧总结
    本篇内容主要讲解“Vue项目中常用的实用技巧总结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue项目中常用的实用技巧总结”吧!目录前言 使用 $attrs 和 $listeners 进行多层...
    99+
    2023-06-20
  • Vue项目中常用的工具函数总结
    目录前言一、自定义聚焦指令1、方式一2、方式二3、方式三二、输入框防抖1、需求2、思路3、代码实现三、关键字高亮1、需求2、思路3、代码演示四、格式化Excel表格中存储的时间1、需...
    99+
    2022-11-12
  • CSS开发心得:解决常见问题的项目经验总结
    CSS(层叠样式表)作为前端开发中不可或缺的一部分,负责页面的样式设计与布局。在项目开发过程中,我们常常会碰到一些常见的CSS问题,解决这些问题是提高项目开发效率和质量的重要环节。本文将总结一些解决常见CSS问题的项目经验,希望能为开发者们...
    99+
    2023-11-03
    响应式设计 样式优化 CSS布局
  • 总结Node.js中的一些错误类型
    前言 Node.js应用中可能会发生多种类型的错误。如:当出现语法错误或运行时错误时,会触发JavaScript错误;当试图试访问一个不存在或没有访问的文件时,会触发系统错误;除JavaScript错误和系...
    99+
    2022-06-04
    错误 类型 Node
  • 总结分析Git pull 常见的错误及其解决方法
    在使用 Git 进行项目协作时,我们经常会使用 git pull 命令来同步远程仓库中的代码到本地。尽管这个命令非常简单易用,但有时候可能会遇到各种各样的错误,甚至导致项目无法正常运行。本文将分析 Git pull 常见的错误及其解决方法。...
    99+
    2023-10-22
  • SQL中有哪些常见的错误
    这篇文章给大家介绍SQL中有哪些常见的错误,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作