<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JSDoc 快速上手

          共 1808字,需瀏覽 4分鐘

           ·

          2021-07-10 13:01

          作者:Midqiu

          來(lái)源:SegmentFault 思否社區(qū)


          JSDoc 是在JS代碼的注釋里,以特定的格式標(biāo)記變量的類型,函數(shù)的參數(shù)、返回值等,這樣做可以避免調(diào)用函數(shù)的時(shí)候傳錯(cuò)或少傳參數(shù),提高代碼的健壯性,減少bug;再加上編輯器的支持,可以極大的提高編碼的效率。

          比如說(shuō)下面的這個(gè)例子,


          因?yàn)槲覀儤?biāo)記了pd的類型,當(dāng)調(diào)用pd這個(gè)變量的時(shí)候,編輯器可以非常方便的提示這個(gè)對(duì)象上有什么方法。

          我們翻看JSDoc的官方文檔發(fā)現(xiàn)羅列了一大堆的功能,但其實(shí)常用的功能也就幾個(gè),只需要花幾分鐘掌握一下下面的幾個(gè)使用方法,就可以大幅度提高寫代碼的編輯體驗(yàn)。

          JSDoc語(yǔ)法上要求以/**開(kāi)頭,*/的注釋。

          聲明函數(shù)的參數(shù)的類型

          @param {參數(shù)的類型} 參數(shù)的名 注釋


          如圖所示,當(dāng)我們定義好一個(gè)函數(shù)后,在函數(shù)的上方輸入 /**然后按回車,編輯器會(huì)自動(dòng)替我們補(bǔ)充好相關(guān)的變量名等信息,我們只需要填上參數(shù)的類型就可以了。
          寫好類型之后,在函數(shù)內(nèi)部使用,編輯器會(huì)提示對(duì)應(yīng)的方法和屬性;
          調(diào)用函數(shù)的時(shí)候,編輯器也會(huì)解析我們寫到JSDoc內(nèi)容,提示需要傳入的參數(shù)的類型和參數(shù)的注釋。
          類型除了圖上所示的string之外,還有boolean、 undefined、 null 類型;還有復(fù)雜類型,{key1:string,key2?:number} ;還可以相互組合比如 string|number 等typescript里面可以用type定義的。

          聲明函數(shù)的返回值的類型

          @returns來(lái)指定函數(shù)的參數(shù)類型和返回值類型
          @returns {string}
          例如:
          /**
           *
           * @param {string} id 注釋注釋注釋
           * @param {string} name 注釋注釋注釋
           * @returns {string}
           */
          function getName(id, name) {
            //name.
          }
          調(diào)用的效果:

          聲明變量的類型

          /**@type {string} */
          var aaa=global.aaa
          效果圖:

          定義一個(gè)類型

          有時(shí)候,有一些類型比較復(fù)雜,并且許多地方都需要用,這時(shí)候我們可以定義一個(gè)類型,供其他地方使用。
          @typedef {類型} 類型名
          比如,我們定義了一個(gè)類型User,分別有兩個(gè)屬性name和age
          /**@typedef {{name:string,age:number}} User */
          也可以寫成這種方式:
          /**
           * @typedef {Object} User
           * @property {string} name
           * @property{number} age
           */
          在函數(shù)定義中使用:
          在其他地方使用:

          定義一個(gè)函數(shù)類型的復(fù)雜類型:

          /**@typedef {(a:string,b:string)=>void} FN */
          或者:
          /**@typedef {Function} FN
           * @argument {string} a
           * @argument {string} b
           */


          點(diǎn)擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開(kāi)更多互動(dòng)和交流,掃描下方”二維碼“或在“公眾號(hào)后臺(tái)回復(fù)“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

          - END -


          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本一级婬片A片免费播放一 | 亚洲视频欧美视频视频一区 | 豆花视频网站 | 亚洲五码高清视频 | 欧美激情xxx |