项目场景: 前端项目 使用typescript eslint ---- 问题描述 使用setTimeout 函数,接收其返回值。...返回值类型 function setTimeout(callback: (...args: TArgs) => void, ms?...: number, ...args: TArgs): NodeJS.Timeout; 由定义可推断出类型是 NodeJS.Timeout 定义其接收变量时发现eslint 不认识: ‘NodeJS’...is not defined.eslint(no-undef) ---- 解决方案: 这个错误一般是eslint 识别到nodejs 没有被定义,所以只能看从哪里引入或者全局给eslint 一个变量让认识...目前我找不到这个NodeJS 命名空间从哪里来的暂时可以在eslintrc.js 文件配置一个globals
应将该值传递给resolve,如果发生错误,则调用 reject 并告知错误信息。 该规则不会阻止你在 Promise 构造函数中的嵌套回调内返回值。...针对 TypeScript 用户的附加规则 如果你的项目使用的是 TypeScript,那么你可能已经熟悉了 TypeScript ESLint(以前的 TSLint)。...@typescript-eslint/await-thenable 该规则不允许等待非 Promise 的函数或值。...@typescript-eslint/no-floating-promises 此规则强制 Promise 必须附加错误处理程序。...typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin 然后在你的 .eslintrc 配置文件中添加下列配置:
,我们会发现package.json多了几个插件@typescript-eslint/eslint-plugin、@typescript-eslint/parser,并且要安装npm i typescript...: '@typescript-eslint/parser', sourceType: 'module' }, plugins: ['vue', '@typescript-eslint']..., { requireForBlockBody: false }], 'implicit-arrow-linebreak': [0, 'beside'], // ts 任意枚举报错问题...server时就会检查代码错误 提示在utils/index.js中不能使用console,很显然,这条规则并不符合我们的初衷,我只需要在生产环境环境不打印console才行 当我们修改.eslintrc.js...插件 除了eslint-webpack-plugin的插件帮我们在代码运行时就可以检测出代码的一些不规范问题,我们通常可以结合vscode插件帮我更友好的提示,我们需要在写代码的时候,编辑器就已经给我们提示错误
一、安装react+ts npx create-react-app my-app --template typescript 二、安装eslint代码检测 yarn eslint npx eslint...--init eslint初始化后会出现三个项目,根据项目而定 1、使用什么样的eslint?...(这里我选择3) To check syntax only // 只检测语法性错误 To check syntax and find problems // 检查语法错误并发现问题代码 To check...syntax, find problems, and enforce code style // 检查语法错误,发现问题代码,校验代码风格 2、项目使用什么类型的模块?...XO: https://github.com/xojs/eslint-config-xo 8、你希望你的配置文件是什么格式的?
可选属性vs null undefined null 和 undefined 是 ts 中的基础类型,分别具有值 null 和 undefined,默认情况下它们是所有类型的子类型,即可以赋值给任意类型...null与undefined是所有其它类型的一个有效值。 这也意味着,你阻止不了将它们赋值给其它类型,就算是你想要阻止这种情况也不行。...null的发明者,Tony Hoare,称它为价值亿万美金的错误。...tsconfig.js 文件中设置 strictNullChecks 为 true 时,就不能将 null 和 undefined 赋值给除它们自身和 void 之外的任意类型了。...在这种严格检查的情况下,如果你确实在某个地方想要给一个其他类型的值设置初始值为空,然后再赋值,可以使用联合类型来实现。
即使我们为 string 类型的变量赋值为其他类型,代码也是可以正常运行的。...其次,TypeScript 增加了代码的可读性和可维护性,类型定义实际上就是一个很好的文档,比如在调用函数时,通过查看参数和返回值的类型定义,就大概知道这个函数如何使用。...而 ESLint 团队将不再维护 typescript-eslint-parser,也不会在 Npm 上发布,任何使用 tyescript-eslint-parser 的用户应该改用 @tyescript-eslint...对于ESLint目前没有覆盖的场景(例如语义linting或程序范围的linting),我们将致力于将ESLint的TypeScript支持与TSLint等同起来。...建议及注意事项 改造过程 在接入 TypeScript 时,不必一次性将所有文件都改为ts语法,原有的语法也是可以正常运行的,最好就是单个修改 初次改造时出现一大串的错误是正常的,基本上都是类型错误,按照错误提示去翻译进行修改对应错误
例如给某个string变量赋值数值,或给对象赋值时候缺少了某些必要字段,调用函数时漏传或者错传参数等。...Typescript进阶篇 5.1 函数 函数类型: 函数类型主要声明的是参数和返回值的类型。...,只能在类实例初始化的时候赋值。...安装eslint相关依赖 npm i eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin -D。...@typescript-eslint/eslint-plugin: 提供了typescript相关的eslint规则列表。
1、类型系统 TypeScript 是静态类型 动态类型:是指在运行时才会进行类型检查,类型错误往往会导致运行时错误。...虽然 TS 不限制加号两侧的类型,但是可以借助类型系统,以及 ESLint 代码检查,来限制加号两侧必须同为数字或同为字符串。...1)、任意值(Any)用来表示允许赋值为任意类型。...一个普通类型,在赋值过程中是不被允许改变类型的,any 类型,允许被赋值为任意类型。...属性值为任意值 注意:一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集: 例一:任意属性的类型是 string,但是可选属性 age 的值却是 number,number 不是 string
使用 TypeScript,你可以在编写代码时发现更多错误,从而提高代码的可靠性和可维护性。...TypeScript 的主要特性静态类型检查:TypeScript 在编译时进行类型检查,能够捕获许多在运行时才会出现的错误。...静态类型检查静态类型检查是 TypeScript 最重要的特性之一。它允许开发者在编写代码时定义变量、函数参数和返回值的类型,这样在编译时就能捕获到许多潜在的错误。...,编译时会报错在这个示例中,add 函数的参数和返回值都被定义为 number 类型。...现代 JavaScript 特性TypeScript 支持最新的 JavaScript 特性,如箭头函数、解构赋值、模板字符串等。
前言 ESLint 在项目中已经是大家见惯不惯的存在,你可能很厌烦动不动跳出来的 ESLint 报错,也可能很享受经过统一校验的工工整整的代码,无论如何,我的意见是,在稍微正式点的项目中都要有 ESLint...本文来自于我在所在团队(淘宝店铺)内部制定、落地、推广 ESLint 规则集的收获,将会简要的介绍一批我认为在 TypeScript 分享中非常有必要的规则,通过这篇文章,你会了解到在制定规则时我们考虑的是什么...为什么:逻辑或 || 会将 0 与 "" 视为 false 而导致错误的应用默认值,而可选链相比于逻辑与 && 则能够带来更简洁的语法(尤其是在属性访问嵌套多层,或值来自于一个函数时,如 document.querySelector...为什么:虽然 TypeScript 是允许使用各种合法表达式作为枚举成员的,但由于枚举的编译结果拥有自己的作用域,因此可能导致错误的赋值,如: const imOutside = 2; const b...的值以及正则表达式,或者你也可以允许任意的值,但这样就没意思了...
对于未定义的变量 myNane,tsc 和 eslint 都可以检查出来。 由于 eslint 无法识别 myName 存在哪些方法,所以对于拼写错误的 toString 没有检查出来。...由此可见,eslint 能够发现出一些 tsc 不会关心的错误,检查出一些潜在的问题,所以代码检查还是非常重要的。...关闭、警告和报错的含义如下: 关闭:禁用此规则 警告:代码检查时输出错误信息,但是不会影响到 exit code 报错:发现错误时,不仅会输出错误信息,而且 exit code 将被设为 1(一般 exit...在 VSCode 中集成 ESLint 检查§ 在编辑器中集成 ESLint 检查,可以在开发过程中就发现错误,甚至可以在保存时自动修复错误,极大的增加了开发效率。.../typescript/lib" } 这样就实现了保存文件时自动格式化并且自动修复 ESLint 错误。
这可以让开发者在出现潜在错误之前捕获许多问题。 # 为什么要使用 TypeScript ? 对于由大型团队构建的大型应用程序,TypeScript 尤其有用。...只能使用相应类型的值进行赋值。...对除 any 类型之外的任何其他类型进行赋值都会导致 TypeScript 错误。 # Any any 类型是 TypeScript 中最宽松的类型,使用它将禁用任何类型检查。...可以在想要绕过通常会出现的错误时使用它。...OK anyVal = "1"; // OK anyVal = false; // OK let numVal: number; numVal = anyVal; // OK 使用 any 类型的变量可以接受并被赋值为任何其他类型的值
本文讲的是如何将一个旧的 Node.js 项目使用 TypeScript 进行改造,包括目录结构调整、TypeScript-ESLint 配置、tsconfig 配置、调试、常见错误处理等。...报错 先不要着急去解决错误,因为还需要对 TypeScript 添加 ESLint 配置,避免改多遍,先把 ESLint 配置好,当然,你如果喜欢 Pretitter,可以把它加上,本文就不介绍如何集成...path 处的错误: 找不到模块“path”。...对象属性赋值报错 动态对象是 js 的特色,我先定义个对象,不管啥时候我都可以直接往里面加属性,这种报错,最快的改造办法就是给对象申明 any 类型。...(@typescript-eslint/explicit-function-return-type),意思是方法需要有返回值,只是警告,不影响项目运行,先忽略,后续再完善。
JS/TS 规范工具: ESLint简介ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。...3. rules - 具体代码规则rules 配置即代表在 ESLint 中手动调整哪些代码规则,比如禁止在 if 语句中使用赋值语句这条规则可以像如下的方式配置:// .eslintrc.jsmodule.exports...的错误已经能够及时显示到命令行窗口中了。...一个数组,包含两个元素,即[简单值,自定义配置],第一个元素通常为一个简单值,第二个元素用来进行更精细化的规则配置。...现在我们可以尝试对代码进行提交,假如输入一个错误的 commit 信息,commitlint 会自动抛出错误并退出至此,我们便完成了 Git 提交信息的卡点扫描和规范检查。
无论是否使用 TypeScript,任何规模的开发团队都应该遵循以下惯例: 编写良好的单元测试——应在合理范围内涵盖尽可能多的生产代码 结对编程——额外的审视可以捕捉到的错误远远超过语法错误 良好的同行评审流程...——正确的同行评审可以检查出许多机器无法捕获的错误 使用 linter,例如 eslint TypeScript 可以在这些基础之上增加额外的安全性,但我认为这在编程语言需求列表中应该排在后面。...我仍然会遇到许多运行时错误,tsc 编译器不会标记这些错误。通过这种方法,TypeScript 在健全和不健全的阵营中脚踏两只船。这种半途而废的现象是通过 any 类型强制执行的,我将在后面提到。...可怕的 `any` 类型和严格性选项 any 类型就是这样,编译器允许任何操作或赋值。 TypeScript 在一些小细节上往往很好用,但是人们倾向于在 any 类型上花费很多时间。...规则 @typescript-eslint/no-explicit-any【https://github.com/typescript-eslint/typescript-eslint/blob/master
总结一下ESLint的作用及优势: 检查语法错误,避免低级bug; 比如:api语法错误、使用了未定义的变量、修改const变量 统一团队代码风格 比如:使用tab还是空格,使用单引号还是双引号等 确保代码遵循最佳实践...虽然多转换一层效率略微降低,好处是可以支持使用任意规则来检测 AST 是否符合预期,这使得 ESLint 高可扩展性。...要改变一个规则设置,你必须将规则 ID 设置为下列值之一: "off" 或 0 - 关闭规则 "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出) "error" 或...2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出) Globals-配置额外的全局变量 启用ESLint规则后,当访问当前源文件内未定义的变量时,no-undef 规则将发出警告...而有时候,我们是需要在其他文件访问一些全局变量的,且保证能正常取到值。这时可以在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。
a"); //任意值 functionflow5(y:any){ console.log(y); } flow3("a"); //数组 let arr:Array=[true,false...类型匹配,无错误 ?...ESlint ESlint这种和我们朝夕相处的伙伴就不必过多解释了吧,它的作用是做一些静态检查,对于一些可能在JS运行时候才会报的错误立即检测出来。...的解析器,比如我们项目中就改成了babel-parser "parser": "@typescript-eslint/parser”, 4.rules 配置具体的检查细节,比如下面这条配置直接干了no-console...我们有extends配置项这个好东西,它提供的继承功能直接集成了一些默认的配置,如下 "extends":[ "eslint:recommended", "plugin:@typescript-eslint
eslint配置和rule规则解释 ESLint 是一个ECMAScript/JavaScript 语法规则和代码风格的检查工具,它的目标是保证代码的一致性和避免错误。...借助 ESLint,可将 静态代码分析 和 问题代码协助修复 集成到 编码、提交 和 打包 过程中,及早发现并协助修复代码中: 有语法错误的部分 不符合约定的样式准则的部分 不符合约定的最佳实践的部分...ESLint 兼容的语法分析器有:Esprima、Babel-ESLint、@typescript-eslint/parser,ESLint 默认使用 Esprima。...示例: { plugins: [ 'typescript', '@typescript-eslint', "prettier" ] }...该参数的值为以下之一: 一个指定基础配置来源的字符串 一个指定基础配置来源的字符串的数组:数组中每个配置扩展它前面的配置 ESLint 支持递归扩展配置,所以基础配置中也可包含 extends 参数。
领取专属 10元无门槛券
手把手带您无忧上云