亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

如何為你的JS項目添加智能提示與類型檢查詳解

2024-05-06 16:48:58
字體:
來源:轉載
供稿:網友

前言

最近在做項目代碼重構,其中有一個要求是為代碼添加智能提示類型檢查。智能提示,英文為 IntelliSense,能為開發者提供代碼智能補全、懸浮提示、跳轉定義等功能,幫助其正確并且快速完成編碼。說起來,JavaScript 作為一門動態弱類型解釋型語言,變量聲明后可以更改類型,并且類型在運行時才能確定,由此容易產生大量代碼運行中才能發現的錯誤,相比 Java 等靜態類型語言,開發體驗上確實差了一截。更煩躁的是,智能提示就是依賴于靜態類型檢查的,所以在以前,指望 JavaScript 的智能提示完善度追上 Java 基本不可能。當然,時代在進步,TypeScript 已經問世許久,為 JavaScript 帶來了靜態類型檢查以及其他諸多特性。JavaScript 的智能提示也已有了解決方案。調研了一段時間后,下文以 VSCode 編輯器作為開發工具,介紹一下如何為 JavaScript 加上智能提示以及類型檢查。

基于 JSDoc

JSDoc 是目前最通用的 JavaScript API 文檔生成器,根據其語法編寫代碼注釋,可以十分方便地自動生成文檔。由于 JSDoc 能提供詳細的類型信息,其也被 VSCode 等編輯器接受應用于智能提示。例如,可以使用 @type 標簽來賦予部分聲明的 object 一個特殊類型:

/** * @type {{a: boolean, b: boolean, c: number}} */var x = {a: true};x.b = false;x. // <- 由于 type 聲明,"x" 將被提示含有屬性 a,b 以及 c

JSDoc 最常見的使用是為函數的參數聲明類型,使用 @param 來完成:

/** * @param {string} param1 - 這里可以用于解釋參數含義 */function Foo(param1) { this.prop = param1; // param1 (以及 this.prop)均為 string 類型}

為代碼添加 JSDoc 注釋使得閱讀和理解代碼更加方便(代碼交接時再也不用抓狂了,當然前提是注釋寫得好),也保障了開發時的體驗并且降低了很多運行時才能發現的數據類型方面的 bug。VSCode 基本支持 JSDoc 的常見語法,具體使用可參見JSDoc support in JavaScript。

基于 TypeScript 類型聲明文件

除了使用 JSDoc 提前聲明類型,更為激進的做法是直接使用微軟開發的 TypeScript,為整個項目帶來完善的靜態類型檢查。當然,對于老項目來說,改造的成本較為巨大(使用 Flow 也類似,要動的代碼太多,況且 Flow 爛尾了)。不過由于和 TypeScript 師出同門,VSCode 能夠直接讀取前者的類型聲明文件,來為 JavaScript 提供智能提示(實際上 JavaScript 的智能提示功能就是基于 TypeScript 團隊為 VSCode 提供的 JavaScript 語言服務開發的)。 TypeScript 的類型聲明文件以 .d.ts 為后綴,用于描述同名的 JavaScript 文件導出代碼的類型,功能上類似于 C 語言的 .h 頭文件。不嚴格地來說,ts 類型聲明文件就像用 TypeScript 語法將 JSDoc 的注釋重寫了一遍并提取到了單獨的文件中。VSCode 更是將二者作了融合,當你二者混用的時候,可以直接在 JSDoc 的注釋中直接使用 ts 類型聲明文件中定義的 interface 和 class 等。直接使用官方提供的示意圖(圖中是 Visual Studio,不過無傷大雅):

JS項目,智能提示,類型檢查

對于自己的代碼,可以編寫對應的 ts 類型聲明文件,而對于引用的第三方庫,社區同樣提供了解決方案:DefinitelyTyped 提供了常見的第三方庫的類型聲明文件。VSCode 有很多第三方庫已經內置類型聲明文件,自己下載的話直接使用 npm 即可:

# @types + 第三方庫名稱npm i @types/express

關于 ts 類型聲明文件的語法等相關信息,參見官網介紹

另外,在 VSCode 中,類型檢查并非默認開啟,這意味著即使你有詳盡的 JSDoc 注釋或 ts 類型聲明文件,依然可能在數據類型上栽跟頭。開啟方式為在項目根目錄下添加 jsconfig.json 文件,并設置 "checkJs": true,示例如下:

{ "compilerOptions": {  "checkJs": true },  // 位于此目錄下的文件不進行靜態檢查和智能提示 "exclude": [  "node_modules",  "**/node_modules/*" ]}

總結

最后,無論是對老項目的改造或是新項目的開發,使用以上的方式添加智能提示和類型檢查顯而易見會略微拖慢開發速度,但我們認為,與智能提示帶來的開發體驗、將很多可能在運行時才能發現的錯誤通過類型檢查前置解決、順手完成的詳細文檔以及重構代碼時的信心相比,這點速度的犧牲是值得的。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。

參考文檔:


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲福利一区| 精品久久久久久久久中文字幕| 91精品国产乱码久久久久久蜜臀| 中文字幕亚洲字幕| 欧美一级在线播放| 色悠久久久久综合先锋影音下载| 欧美亚洲日本网站| xxxx欧美18另类的高清| 欧美一区二区大胆人体摄影专业网站| 亚洲精品国产精品国产自| 欧美一级淫片丝袜脚交| 欧美在线国产精品| 91欧美激情另类亚洲| 欧美孕妇孕交黑巨大网站| 欧美风情在线观看| 69久久夜色精品国产69乱青草| 亚洲一区二区免费| 午夜精品99久久免费| 午夜精品一区二区三区在线| 亚洲精品欧美一区二区三区| 国产精品九九九| 日韩精品电影网| 久久综合国产精品台湾中文娱乐网| 欧美性jizz18性欧美| 欧美成人免费小视频| 深夜福利91大全| 欧美激情a∨在线视频播放| 91久久国产精品91久久性色| 日韩av一区二区在线| 九九综合九九综合| 亚洲伊人成综合成人网| 97香蕉超级碰碰久久免费软件| 欧美国产日韩xxxxx| 日韩人在线观看| 日韩av大片免费看| 日韩亚洲成人av在线| 国产一区二区精品丝袜| 亚洲日本欧美中文幕| 国产91色在线播放| 欧美壮男野外gaytube| 亚洲男人av在线| 亚洲欧洲黄色网| 久久精品人人爽| 久久久久久尹人网香蕉| 成人国产精品av| 欧美华人在线视频| 亚洲欧美日韩一区在线| 国产亚洲精品美女| 亚洲成人久久久| 亚洲激情久久久| 久久久av免费| 这里只有精品久久| 久久亚洲春色中文字幕| 一道本无吗dⅴd在线播放一区| 亚洲xxx视频| www.久久撸.com| 欧美另类精品xxxx孕妇| 欧美亚洲午夜视频在线观看| 亚洲精品一区二区久| 亚洲一区二区三区成人在线视频精品| 色综合91久久精品中文字幕| 日韩中文在线中文网在线观看| 欧美视频精品一区| 国产精品扒开腿做爽爽爽男男| 亚洲成人av在线播放| 欧美午夜无遮挡| 在线观看日韩www视频免费| 欧美成人h版在线观看| 亚洲自拍偷拍在线| 日韩精品中文字幕久久臀| 日韩电视剧免费观看网站| 综合欧美国产视频二区| 一区二区三区动漫| 北条麻妃一区二区在线观看| 国产最新精品视频| 国产成人亚洲综合91精品| 欧美日韩国产精品一区二区三区四区| 成人免费观看a| 国产丝袜一区视频在线观看| 亚洲欧美日韩中文在线制服| 成人免费大片黄在线播放| 久久久免费精品视频| 91国在线精品国内播放| 精品久久久久久国产| 日韩美女免费观看| 国产欧美日韩中文字幕| 精品国产999| 久久久亚洲欧洲日产国码aⅴ| 91久久精品久久国产性色也91| 日本久久91av| 在线日韩中文字幕| 亚洲老头老太hd| 国产噜噜噜噜久久久久久久久| 日韩精品视频观看| 两个人的视频www国产精品| 一道本无吗dⅴd在线播放一区| 日韩美女写真福利在线观看| 国产精品专区一| 欧美日韩在线影院| 久久久久久久久久久91| 亚洲人成电影网站色xx| 亚洲精品天天看| 97视频免费看| 亚洲激情视频网站| 日本精品性网站在线观看| 日韩在线欧美在线| 亚洲精品视频在线观看视频| 日韩一区二区精品视频| 亚洲第一网站男人都懂| 日本欧美国产在线| 国产日韩精品电影| 日韩中文字幕在线视频| 日韩欧美成人区| 国产一区二区精品丝袜| 国产精品99久久久久久白浆小说| 日韩在线观看高清| 欧美精品激情在线观看| 国模私拍一区二区三区| 91sao在线观看国产| 亚洲毛片在线看| 亚洲精品免费av| 国产性色av一区二区| 91免费版网站入口| 日韩欧美精品中文字幕| 奇米成人av国产一区二区三区| 国产91色在线|免| 欧美高清自拍一区| 国产精品久久色| 日韩中文字幕av| 日韩中文字幕免费看| 色综合伊人色综合网站| 国产精品久久久久久久av大片| 亚洲欧美综合区自拍另类| 亚洲国产成人久久| 欧美午夜精品久久久久久浪潮| 久久久久久久久久久国产| 欧美丝袜一区二区| 丝袜美腿精品国产二区| 久久精品国产69国产精品亚洲| 成人性生交大片免费观看嘿嘿视频| 欧美激情视频免费观看| 北条麻妃一区二区三区中文字幕| 久热精品视频在线观看| 中文字幕亚洲色图| 国产一区香蕉久久| 国产亚洲精品久久久久久牛牛| 亚洲成avwww人| 亚洲第一av网| 亚洲专区国产精品| 中文字幕日韩欧美在线视频| 一区二区三区视频免费在线观看| 最近2019年好看中文字幕视频| 国产女人精品视频| 色婷婷亚洲mv天堂mv在影片| 国产亚洲欧洲高清| 亚洲精品小视频| 亚洲欧美在线一区二区| 久久久久久久久久久av| 欧美日韩精品国产| 国产欧美va欧美va香蕉在| 久久久精品电影| 亚洲综合第一页| 久久人人爽人人爽人人片av高清| 成人免费网站在线看|