提升 Visual Studio Code 的 JavaScript 開發效率(三)—JSDoc

前面我們講了 jsconfig.json 和 Go To Definition 相關內容,現在 JavaScript 的開發已經非常像在傳統 IDE 裡做靜態、編譯類型語言的開發體驗了。今天我們就再來突破一下,把”靜態類型“也加入到 JavaScript 中去!而這,關鍵就是 JSDoc(http://usejsdoc.org/ )。

JSDoc


提升 Visual Studio Code 的 JavaScript 開發效率(三)—JSDoc


JSDoc 本身是用來對方法、變量、模塊、類等進行結構化文檔註釋用的。它本身還有一個對應的工具,掃描所有源代碼文件裡的 JSDoc 註釋並生成 API 文檔,就像 JavaDoc 一樣。

但是在 VSCode 裡,它被賦予了更加強大的地位。它不僅僅是一個文檔說明,還可以用來做智能提示(IntelliSense),而且可以做到函數的參數級別。甚至還能做參數類型、值類型的校驗!也許你會想到 TypeScript 的 definition 文件(.d.ts)。是的,它也有參數類型校驗,但是它沒有參數說明。如果要參數說明,還是要寫 JSDoc。與其多寫一遍 definition,不如直接使用 JavaScript + JSDoc 更加方便。當然這一切都是依賴於 TypeScript,我們不能因此去否定它。

我們來看看 JSDoc 所帶來的強大提示功能。


提升 Visual Studio Code 的 JavaScript 開發效率(三)—JSDoc


從上面的動圖可以看到,函數的註釋、參數的註釋、參數註釋的輸入跟隨都有了。

參數、類型校驗

文檔提示只是第一步。我們知道 JavaScript 是動態類型、弱類型的語言。變量沒有類型聲明,運行時還可以隨意變更值類型,還有很多內置的自動類型轉換場景。雖然這是吸引我的很大的一方面,不過在團隊協作裡,最好還是能夠做到約束、檢查一下。VSCode 就為我們提供了這麼一個能力。

首先我們要打開 Setting 中的 JavaScript 校驗:"javascript.validate.enable": true。然後在 jsconfig.json 中配置如下:

{
 "compilerOptions": {
 "checkJs": true
 }
}

我們再來看看:


提升 Visual Studio Code 的 JavaScript 開發效率(三)—JSDoc


是不是很不錯?VSCode 幫我們做了必填參數、參數類型、返回值類型等各項檢測與校驗。這樣我們在寫代碼的時候,一方面能夠看到文檔註釋,一方面又能隨時知道調用方式是否錯誤,快哉!

對象解構形式參數

/**
 * set redis key
 * @author kiliwalk
 * @param {Object} params the parameters
 * @param {String} params.key redis key name
 * @param {String} params.value redis key value
 * @param {String} [params.expire] redis key expire time(seconds)
 */
export function set({key, value, expire}){
}


如上示例,我們使用了 Object Destruction 定義了方法的參數。對應的,JSDoc 裡可以通過 . 來為對象內部的屬性提供文檔。來看看使用時的效果:


提升 Visual Studio Code 的 JavaScript 開發效率(三)—JSDoc


這裡有一個地方要注意,參數文檔那一個小窗口,如果一開始沒有顯示,則要再按一次 ctrl+space(macOS),也就是額外觸發一次智能提示。這個在 VSCode 裡叫“toggleSuggestionDetails”(可以在快捷鍵設置裡找到它)。

VSCode 裡還支持更加複雜的 JSDoc 類型聲明。在涉及到複雜對象的輸入、輸出時,我們可能就需要用到了。有興趣的同學可以去這裡看看:https://github.com/Microsoft/TypeScript/wiki/JsDoc-support-in-JavaScript 。

希望通過這幾篇文章,能夠改善大家日常的 JavaScript 開發體驗。這裡面還有很多東西值得我們去探索。

現在,有沒有感覺在 VSCode 裡開發 JavaScript 完全是另一番體驗?


分享到:


相關文章: