TypeScript(八)代码检查(AlloyTeam 的 ESLint、Prettier)、编译选项(allowJs、allowSyntheticDefaultImports)

本文详细介绍了在TypeScript中如何使用ESLint和Prettier进行代码检查,包括安装配置、集成到VSCode以及解决常见问题。此外,还讲解了编译选项`allowJs`和`allowSyntheticDefaultImports`的用法,讨论了它们在TS项目中的作用和配置。
摘要由CSDN通过智能技术生成

TypeScript(八)代码检查(AlloyTeam 的 ESLint、Prettier)、编译选项(allowJs、allowSyntheticDefaultImports)

  • 网址:https://ts.xcatliu.com/

1. 代码检查

2019 年 1 月,TypeScirpt 官方决定全面采用 ESLint 作为代码检查的工具,并创建了一个新项目 typescript-eslint,提供了 TypeScript 文件的解析器 @typescript-eslint/parser 和相关的配置选项 @typescript-eslint/eslint-plugin 等。而之前的两个 lint 解决方案都将弃用:

  • typescript-eslint-parser 已停止维护
  • TSLint 将提供迁移工具,并在 typescript-eslint 的功能足够完整后停止维护 TSLint(Once we consider ESLint feature-complete w.r.t. TSLint, we will deprecate TSLint and help users migrate to ESLint1

综上所述,目前以及将来的 TypeScript 的代码检查方案就是 typescript-eslint

什么是代码检查

代码检查主要是用来发现代码错误、统一代码风格。

在 JavaScript 项目中,我们一般使用 ESLint 来进行代码检查,它通过插件化的特性极大的丰富了适用范围,搭配 typescript-eslint 之后,甚至可以用来检查 TypeScript 代码

为什么需要代码检查

有人会觉得,JavaScript 非常灵活,所以需要代码检查。而 TypeScript 已经能够在编译阶段检查出很多问题了,为什么还需要代码检查呢?

因为 TypeScript 关注的重心是类型的检查,而不是代码风格。当团队的人员越来越多时,同样的逻辑不同的人写出来可能会有很大的区别:

  • 缩进应该是四个空格还是两个空格?
  • 是否应该禁用 var
  • 接口名是否应该以 I 开头?
  • 是否应该强制使用 === 而不是 ==

这些问题 TypeScript 不会关注,但是却影响到多人协作开发时的效率、代码的可理解性以及可维护性。

下面来看一个具体的例子:

var myName = 'Tom';

console.log(`My name is ${
     myNane}`);
console.log(`My name is ${
     myName.toStrng()}`);

以上代码你能看出有什么错误吗?

分别用 tsc 编译和 eslint 检查后,报错信息如下:

var myName = 'Tom';
// eslint 报错信息:
// Unexpected var, use let or const instead.eslint(no-var)

console.log(`My name is ${
     myNane}`);
// tsc 报错信息:
// Cannot find name 'myNane'. Did you mean 'myName'?
// eslint 报错信息:
// 'myNane' is not defined.eslint(no-undef)
console.log(`My name is ${
     myName.toStrng()}`);
// tsc 报错信息:
// Property 'toStrng' does not exist on type 'string'. Did you mean 'toString'?
存在的问题 tsc 是否报错 eslint 是否报错
应该使用 letconst 而不是 var
myName 被误写成了 myNane
toString 被误写成了 toStrng ✅️

上例中,我们使用了 var 来定义一个变量,但其实 ES6 中有更先进的语法 letconst,此时就可以通过 eslint 检查出来,提示我们应该使用 letconst 而不是 var

对于未定义的变量 myNanetsceslint 都可以检查出来。

由于 eslint 无法识别 myName 存在哪些方法,所以对于拼写错误的 toString 没有检查出来。

由此可见,eslint 能够发现出一些 tsc 不会关心的错误,检查出一些潜在的问题,所以代码检查还是非常重要的

在 TypeScript 中使用 ESLint

安装 ESLint

ESLint 可以安装在当前项目中或全局环境下,因为代码检查是项目的重要组成部分,所以我们一般会将它安装在当前项目中。可以运行下面的脚本来安装:

npm install --save-dev eslint

由于 ESLint 默认使用 Espree 进行语法解析,无法识别 TypeS

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChrisP3616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值