最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ESLint規(guī)范TypeScript代碼使用方法

 更新時間:2022年11月17日 15:30:23   作者:鋼蛋  
這篇文章主要為大家介紹了ESLint規(guī)范TypeScript代碼使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前導(dǎo)

ESLint 是一種 JavaScript linter,可以用來規(guī)范 JavaScript 或 TypeScript 代碼,本文教你怎么在項目中快速把 ESLint 安排上。

怎么寫出優(yōu)雅的代碼是一個老生常談的話題,這其中包含了太多內(nèi)容可聊,但搞一套標(biāo)準(zhǔn)規(guī)范絕對是萬里長征第一步。ESLint 致力于如何把規(guī)范落地到你的項目中,讓你的代碼清清爽爽。

ESLint 作為一種 JavaScript linter,它能強制幫你遵循一套特定的代碼書寫風(fēng)格和標(biāo)準(zhǔn),并且會在不符合標(biāo)準(zhǔn)的地方貼心地給出提示。

你可能也聽說過 TSLint,很可(不)惜(錯),已經(jīng)掛了。原因是考慮到 ESLint 的存在,并且兩個項目之間存在大量的重復(fù)工作,TSLint 團(tuán)隊在 2019 年宣布不再維護(hù)該項目。

也就是說,你可能會搜到很多已存的 TSLint 周邊生態(tài)包,但在使用之前,你得掂量一下,它們可是沒有人在維護(hù)了哦。

所以,ESLint 就成為了事實上的標(biāo)準(zhǔn),幫你規(guī)范 JavaScript 和 TypeScript 代碼。

安裝依賴 

在你的工程下運行下面的代碼,安裝 ESLint 及其它依賴包

npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

.eslintrc.js

創(chuàng)建 .eslintrc.js 文件

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ]
}

.eslintignore

再建一個忽略文件 .eslintignore,忽略不想加入限制的文件,比如 node_modules,打包產(chǎn)物文件等

node_modules
dist

package.json scripts

在 package.json 文件中新建一條 lint 命令

{
  "scripts": {
    ...
    "lint": "eslint . --ext .ts",
  }
}

執(zhí)行 npm run lint 試試看

假如我們的工程下只有 index.ts 文件,內(nèi)容如下

console.log('Hello world!')

因為我們目前還沒有創(chuàng)建任何規(guī)則,所以看不出什么變化。

Rules

eslint 的 rules 有三種模式,off,on 和 warn

"off" means 0 (turns the rule off completely)

"warn" means 1 (turns the rule on but won't make the linter fail)

"error" means 2 (turns the rule on and will make the linter fail)

如果想禁用 console,可以這樣設(shè)置

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "rules": { 
    "no-console": 2 // Remember, this means error!  }
}

再運行 npm run lint

2:1  error  Unexpected console statement  no-console
    ? 1 problem (1 error, 0 warnings)

lint 報錯了...

關(guān)掉 no-console

{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "rules": {     "no-console": 0 
  }
}
npm run lint

世界安靜了...

fix

我們可以利用 ESLint 的 fix 功能,自動修復(fù)報 warn 或 error 的代碼

改造一下 package.json

{
  "scripts": {
    ...
    "lint": "eslint . --ext .ts",
    "lint-and-fix": "eslint . --ext .ts --fix"  },
}

運行 npm run lint-and-fix  可以檢查和自動修復(fù)有問題代碼

聊一聊原理

parser

ESLint 原理需要結(jié)合 parser 配置項來講。

首先,ESLint 為什么需要一個 解析器? 簡單來講,ESLint 做規(guī)則校驗的前提是將語言轉(zhuǎn)變?yōu)槌橄笳Z法樹(AST),它的校驗規(guī)則是用于適配 AST 的,在遍歷 AST 節(jié)點的過程中,找到該節(jié)點適配的規(guī)則,并判斷是否滿足規(guī)則。

plugins

ESLint 能火起來的很大原因,在于它的插件式設(shè)計,這種設(shè)計使得他能快速的響應(yīng)變化。插件是什么?插件就是規(guī)則,任何插件想要在 ESLint 中生效,需要規(guī)定兩點內(nèi)容。

  • 該規(guī)則針對的是 AST 的那些節(jié)點。
  • 該節(jié)點需要滿足怎樣的條件。

有了這兩點,ESLint 就會在遍歷 AST 的過程中,找出不符合規(guī)則的節(jié)點,將其報告出來。

默認(rèn)情況下,ESLint 中的規(guī)則會對 JS 進(jìn)行校驗,如果我們想對 React 進(jìn)行校驗的話,就需要增加 eslint-plugin-react 插件,如下所示,在 plugins 中增加這個插件,eslint-plugin 的前綴是可以省略的。

"plugins": [
    "react"
]

有了規(guī)則是不夠的,我們還需要開啟這些規(guī)則,可以在 rules 中配置,更好的方法就是在 extends 中加入以下代碼。

"extends": [
    "plugin:react/recommended"
]

extends

ESLint 中的規(guī)則很多,但是默認(rèn)都不會開啟的,我們需要在 rules 中設(shè)定這些規(guī)則開關(guān),這個環(huán)節(jié)非常繁瑣。因此 ESLint 設(shè)計了 extends 這個字段,用于繼承別的文件中已經(jīng)配置好的的規(guī)則。在不加入任何插件的情況下,extends 可以配置為 eslint:recommended 或 eslint:all。recommended 是 ESLint 官方推薦的配置,校驗的規(guī)則比較少,eslint:all 則會開啟全部的規(guī)則校驗。

如果你想了解這兩者的區(qū)別,你可以去 官方規(guī)則文檔 查看。更快的方法是將 "eslint:recommended" 變成 "eslint:all"。修改后的結(jié)果非常夸張,我總共 3 行代碼 ESLint 檢測出 10 個錯誤。

extends 是一個數(shù)組,可以配置多組規(guī)則,每個配置繼承它前面的配置。實際開發(fā)中,我們會繼承一些優(yōu)秀的 ESLint 方案,比如 airbnb,然后結(jié)合自己的實際情況,在 rules 中進(jìn)一步配置。

總結(jié)

使用 @typescript-eslint/parser 作為解析器,該解析器能夠識別 TS 語法,結(jié)合特定的 plugin 就能實現(xiàn) TS 規(guī)范化。

ESLint 的核心在于 parser 和 plugin,一個負(fù)責(zé)將當(dāng)前代碼解析為 AST,一個負(fù)責(zé)在 AST 的基礎(chǔ)上生成規(guī)則。

不同的 parser 代表的不同的解析方式,各式各樣的 plugin 也代表不同的規(guī)則,ESLint 的生態(tài)能越來越好,一部分要歸功于這種可插拔式的設(shè)計。

目前社區(qū)有很多優(yōu)秀的 ESLint 規(guī)范,我們可以參考這些規(guī)范做一份適用于自己團(tuán)隊的規(guī)范。

以上就是ESLint規(guī)范TypeScript代碼使用方法的詳細(xì)內(nèi)容,更多關(guān)于ESLint規(guī)范TypeScript的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序 Flex布局詳解

    微信小程序 Flex布局詳解

    這篇文章主要介紹了微信小程序 Flex布局詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 微信小程序之前臺循環(huán)數(shù)據(jù)綁定

    微信小程序之前臺循環(huán)數(shù)據(jù)綁定

    這篇文章主要介紹了微信小程序之前臺循環(huán)數(shù)據(jù)綁定的相關(guān)資料,這里提供實例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • javascript使用btoa和atob來進(jìn)行Base64轉(zhuǎn)碼和解碼

    javascript使用btoa和atob來進(jìn)行Base64轉(zhuǎn)碼和解碼

    javascript原生的api本來就支持,Base64,但是由于之前的javascript局限性,導(dǎo)致Base64基本中看不中用。當(dāng)前html5標(biāo)準(zhǔn)正式化之際,Base64將有較大的轉(zhuǎn)型空間,對于Html5 Api中出現(xiàn)的如FileReader Api, 拖拽上傳,甚至是Canvas,Video截圖都可以實現(xiàn)
    2017-03-03
  • Javascript中綁定click事件的四種方式介紹

    Javascript中綁定click事件的四種方式介紹

    今天小編就為大家分享一篇關(guān)于Javascript中綁定click事件的四種方式介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 帶你理解JavaScript 原型原型鏈

    帶你理解JavaScript 原型原型鏈

    理解js中原型、原型鏈這個概念,絕對是幫助我們更深入學(xué)習(xí)js的必要一步,比如,如果js開發(fā)者想理解js繼承,new關(guān)鍵字原理,甚至封裝組件、優(yōu)化代碼,弄明白js中原型、原型鏈更是前提條件。本篇文章,用最簡潔的文字,清楚明白講解原型鏈相等關(guān)系和原型、原型鏈存在的意義
    2021-09-09
  • 微信小程序WXSS樣式文件教程

    微信小程序WXSS樣式文件教程

    這篇文章主要為大家介紹了微信小程序WXSS樣式文件教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • JS前端接口請求參數(shù)混淆方案分享

    JS前端接口請求參數(shù)混淆方案分享

    這篇文章主要為大家介紹了JS前端接口請求參數(shù)混淆方案分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解

    直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解

    這篇文章主要為大家介紹了直觀詳細(xì)的typescript隱式類型轉(zhuǎn)換圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 微信小程序 獲取相冊照片實例詳解

    微信小程序 獲取相冊照片實例詳解

    這篇文章主要介紹了微信小程序 獲取相冊照片實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • JavaScript原型鏈中函數(shù)和對象的理解

    JavaScript原型鏈中函數(shù)和對象的理解

    這篇文章主要為大家介紹了JavaScript原型鏈中函數(shù)和對象的理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論

临湘市| 鄯善县| 永嘉县| 德令哈市| 焦作市| 尤溪县| 那曲县| 琼结县| 泸州市| 屯门区| 县级市| 绥江县| 庄河市| 文安县| 南京市| 汶上县| 息烽县| 故城县| 宜春市| 镇远县| 黎平县| 中山市| 东乡县| 濮阳县| 绥化市| 常宁市| 宣城市| 荆州市| 陈巴尔虎旗| 南平市| 新建县| 连云港市| 凤山市| 亚东县| 晴隆县| 五原县| 肃宁县| 荣成市| 鲜城| 鄂温| 盘山县|