日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

前端開發何必執著于Typescript?Jsdoc一樣很好用

來源: 責編: 時間:2023-08-09 23:02:18 343觀看
導讀為什么很多公司執著于typescript?因為typescript支持很多JS不支持的特性,正確的使用typescript,可以使你的代碼更易于維護。最主要的是可以給JS添加類型,使編輯器的提示更智能。但是,typescript是很復雜的一門語言,很多開發

BS928資訊網——每日最新資訊28at.com

為什么很多公司執著于typescript?因為typescript支持很多JS不支持的特性,正確的使用typescript,可以使你的代碼更易于維護。BS928資訊網——每日最新資訊28at.com

最主要的是可以給JS添加類型,使編輯器的提示更智能。BS928資訊網——每日最新資訊28at.com

但是,typescript是很復雜的一門語言,很多開發者并不能很好的運用typescript,甚至很多人是被迫的,他們內心是反感使用typescript的,導致代碼寫的亂七八糟。BS928資訊網——每日最新資訊28at.com

事實上,JS也有很多優勢是typescript所不具備的,比如:JS的靈活性很高。BS928資訊網——每日最新資訊28at.com

如果我告訴你,有一種工具,完全可以像寫typescript一樣寫JS,你會用嗎?BS928資訊網——每日最新資訊28at.com

我說的這個工具就是jsdoc,我們可以叫它JS文檔注釋。它的目的也是為JS添加類型的,只是以注釋的形式添加的,它有固定的語法。BS928資訊網——每日最新資訊28at.com

我就以項目中的代碼來舉例吧,大家看如下文檔注釋。其中,@template 用于聲明泛型類型,@typedef 用于定義一個類型。BS928資訊網——每日最新資訊28at.com

在這里,我們定義了一個泛型T和一個名叫TreeNode的類型。TreeNode包含2個確定的字段:id和children,剩下的字段由泛型T確定。BS928資訊網——每日最新資訊28at.com

/** * @template T * @typedef {T & {id: number, children: TreeNode<T>[]}} TreeNode */

下面,我們來測試一下這個類型。BS928資訊網——每日最新資訊28at.com

如下圖,我們聲明一個變量node,使用@type指定為TreeNode類型,尖括號中間的對象類型替代了我們定義中的泛型T。BS928資訊網——每日最新資訊28at.com

當我們鍵入點號后,編輯器給出了非常智能的提示。大家說,是不是很酷?BS928資訊網——每日最新資訊28at.com

BS928資訊網——每日最新資訊28at.com

這是真實項目中的代碼,一個生成ID的函數。BS928資訊網——每日最新資訊28at.com

使用@param可以為函數參數指定類型,在這里,我們為tree指定了TreeNode數組類型。使用@returns可以指定函數返回值的類型。BS928資訊網——每日最新資訊28at.com

/** * @param {TreeNode<{}>[]} tree * @returns {number} */export const genId = tree => {  return (function eachFn (data) {    return data.reduce((t, item) => {      return Math.max(        t,        item.id || 0,        item.children ? eachFn(item.children) : 0      )    }, 0)  })(tree) + 1}

如下圖,由于我們給tree指定了類型,當鍵入點號后,編輯器知道data是數組類型,正確地給出了數組的成員提示。這使我們在鍵入時,不易出錯。BS928資訊網——每日最新資訊28at.com

BS928資訊網——每日最新資訊28at.com

當我們鼠標指針移入函數名時,編輯器給出了該函數的提示。告訴我們,該函數接收一個TreeNode數組參數tree,返回數值類型結果。BS928資訊網——每日最新資訊28at.com

BS928資訊網——每日最新資訊28at.com

現在,大家覺得jsdoc怎么樣?是不是很好用?酷不酷?BS928資訊網——每日最新資訊28at.com

如果大家開發用的語言是JS,我建議大家學學jsdoc。jsdoc的用法遠比本文介紹的要多,它很強大,但語法卻很簡單易學。BS928資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5116-0.html前端開發何必執著于Typescript?Jsdoc一樣很好用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Rust采用率不斷提高,2022年度Rust調查報告出爐!

下一篇: Go1.21 那些事:泛型庫、for 語義變更、統一 log/slog、WASI 等新特性,你知道多少?

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 神木县| 璧山县| 蒙城县| 陆良县| 随州市| 北流市| 晋州市| 灵宝市| 交城县| 台东县| 通城县| 华蓥市| 沛县| 四会市| 衢州市| 游戏| 万载县| 西畴县| 手游| 永丰县| 上林县| 镇康县| 河东区| 东光县| 晋州市| 泾阳县| 玛纳斯县| 遵义县| 罗田县| 崇阳县| 普兰店市| 石门县| 淮南市| 灌云县| 高清| 海安县| 元朗区| 双柏县| 花莲市| 黄石市| 区。|