Typescript Errors 总结

这篇博客总结了TypeScript中的错误类型,包括简洁提示和详细提示,并列举了几个常见的错误,如TS2304、TS2307、TS1148,以及如何解决这些问题。还提到了接口不能同时扩展类型别名的情况,以及如何处理TSLint的报错,特别是关于混合使用空格和Tab缩进的问题。
摘要由CSDN通过智能技术生成

Typescript Errors

  • TypeScript 是一种专注于帮助开发人员的编程语言,当错误出现时,它会提供尽可能提供非常有用的错误信息。这对于那些信任使用者的编译器来说,可能会导致轻微的信息量过载,而不会那么实用。

错误分类

  • TypeScript 错误信息分为两类:简洁详细
简洁提示
  • 简洁的错误信息是为了提供一个编译器描述的错误号以及一些相关的信息。

示例:

TS2345: Argument of type '{ foo: number; bar: () => string; }' is not assignable to parameter of type 'SomethingComplex'.
TS1192: Module '"/Volumes/repos/tc-web-ts/node_modules/@types/react/index"' has no default export.
TS7016: Could not find a declaration file for module '../styledComponents/loginAndRegister'.
详细提示
  • 详细的错误信息是为了指导使用者知道为什么一些错误(在这个例子里是类型不兼容)会发生。第一行与简洁的错误信息相同,后跟一些详细的信息。

示例:

Argument of type '{ foo: number; bar: () => string; }' is not assignable to parameter of type 'SomethingComplex'.
  Types of property 'bar' are incompatible.
    Type '() => string' is not assignable to type 'string'.

TS7016: Could not find a declaration file for module 'rc-queue-anim'. '/Users/michealye/Desktop/myProduct/shebao520-mobile/node_modules/rc-queue-anim/lib/index.js' implicitly has an 'any' type.

常见的Error

TS2304

示例:

Cannot find name ga, Cannot find name $, Cannot find module jquery

你可能在使用第三方的库(如:google analytics),但是你并没有 declare 的声明。在没有声明它们之前,TypeScript 试图避免错误和使用变量。因此在使用一些额外的库时,你需要明确的声明使用的任何变量(如何修复它)。

TS2307

示例:

Cannot find module 'underscore'

你可能把第三方的库做为模块(移步模块)来使用,并且没有一个与之对应的环境声明文件(更多声明文件信息)。

TS1148

示例:

Cannot compile modules unless the '--module' flag provided
捕获不能有类型注解的简短变量

示例:

try {
  something();
} catch (e) {
  // 捕获不能有类型注解的简短变量
  // ...
}

TypeScript 正在保护你免受 JavaScript 代码的侵害,取而代之,使用类型保护:

try {
  something();
} catch (e) {
  // 捕获不能有类型注解的简短变量
  if (e instanceof Error) {
    // do...
  }
}
接口 ElementClass 不能同时扩展类型别名 ComponentComponent
  • 当在编译上下文中同时含有两个 react.d.ts(@types/react/index.d.ts)会发生这种情况。

修复:

删除 node_modules 和任何 package-lock(或者 yarn lock),然后再一次 npm install;
如果这不能工作,查找无效的模块(你所使用的所用用到了 react.d.ts 模块应该做为 peerDependency 而不是做为 dependency 使用)并且把这个报告给相关模块。

常见 TSLint 报错
 [W099]:Mixed spaces and tabs

这个错误是比较常见的,意思是在同一行中,空格和Tab缩进混合使用了,修改很简单,一般是删除Tab缩进,全部改为空格。为了方便,我们可以把编辑器的Tab缩进设置成2个或4个空格,来代替原有的缩进。

[W030]:Expected an assignment or function call and instead saw an expression

这个错误提示的很诡异,我是用如下代码提示的这个错误 index-1 <0 ? index = 0:index = index - 1; 这是一个逗号表达式,但是JSLInt认为这里不应该用表达式,而必须是一个函数,所以,如果非常在乎这个错误,就改为if else 语句吧

 [W041]:Use '===' to compare with ...

这个错误是说,我们要是用全等来代替等于,如果表达式两边的数据类型是一致的话,建议使用全等来判断

[W033]:Missing semicolon

缺少分号;这个一般都是自己忘记写了吧,但是有一个需要注意的是,对于只有一句的结构,后面也需要写分号。例如:if(index<0) {index=tcount-1} 这句代码,正确写法是if(index<0) {index=tcount-1;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值