成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端開發(fā)何必執(zhí)著于Typescript?Jsdoc一樣很好用

開發(fā) 開發(fā)工具
如果我告訴你,有一種工具,完全可以像寫Typescript一樣寫JS,你會(huì)用嗎?我說的這個(gè)工具就是Jsdoc,我們可以叫它JS文檔注釋。它的目的也是為JS添加類型的,只是以注釋的形式添加的,它有固定的語法。

為什么很多公司執(zhí)著于typescript?因?yàn)閠ypescript支持很多JS不支持的特性,正確的使用typescript,可以使你的代碼更易于維護(hù)。

最主要的是可以給JS添加類型,使編輯器的提示更智能。

但是,typescript是很復(fù)雜的一門語言,很多開發(fā)者并不能很好的運(yùn)用typescript,甚至很多人是被迫的,他們內(nèi)心是反感使用typescript的,導(dǎo)致代碼寫的亂七八糟。

事實(shí)上,JS也有很多優(yōu)勢(shì)是typescript所不具備的,比如:JS的靈活性很高。

如果我告訴你,有一種工具,完全可以像寫typescript一樣寫JS,你會(huì)用嗎?

我說的這個(gè)工具就是jsdoc,我們可以叫它JS文檔注釋。它的目的也是為JS添加類型的,只是以注釋的形式添加的,它有固定的語法。

我就以項(xiàng)目中的代碼來舉例吧,大家看如下文檔注釋。其中,@template 用于聲明泛型類型,@typedef 用于定義一個(gè)類型。

在這里,我們定義了一個(gè)泛型T和一個(gè)名叫TreeNode的類型。TreeNode包含2個(gè)確定的字段:id和children,剩下的字段由泛型T確定。

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

下面,我們來測(cè)試一下這個(gè)類型。

如下圖,我們聲明一個(gè)變量node,使用@type指定為TreeNode類型,尖括號(hào)中間的對(duì)象類型替代了我們定義中的泛型T。

當(dāng)我們鍵入點(diǎn)號(hào)后,編輯器給出了非常智能的提示。大家說,是不是很酷?

這是真實(shí)項(xiàng)目中的代碼,一個(gè)生成ID的函數(shù)。

使用@param可以為函數(shù)參數(shù)指定類型,在這里,我們?yōu)閠ree指定了TreeNode數(shù)組類型。使用@returns可以指定函數(shù)返回值的類型。

/**
 * @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指定了類型,當(dāng)鍵入點(diǎn)號(hào)后,編輯器知道data是數(shù)組類型,正確地給出了數(shù)組的成員提示。這使我們?cè)阪I入時(shí),不易出錯(cuò)。

通過數(shù)組方法,編輯器也推導(dǎo)出了item的類型,當(dāng)我們鍵入點(diǎn)號(hào)后,給出了合理的提示。

當(dāng)我們鼠標(biāo)指針移入函數(shù)名時(shí),編輯器給出了該函數(shù)的提示。告訴我們,該函數(shù)接收一個(gè)TreeNode數(shù)組參數(shù)tree,返回?cái)?shù)值類型結(jié)果。

現(xiàn)在,大家覺得jsdoc怎么樣?是不是很好用?酷不酷?

如果大家開發(fā)用的語言是JS,我建議大家學(xué)學(xué)jsdoc。jsdoc的用法遠(yuǎn)比本文介紹的要多,它很強(qiáng)大,但語法卻很簡(jiǎn)單易學(xué)。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-02-03 16:03:17

TypescriptJavaScript

2021-12-22 07:31:18

RedisNoSQL數(shù)據(jù)庫(kù)

2022-09-27 14:45:51

安全服務(wù)商黑客

2023-02-15 08:17:20

VSCodeTypeScrip

2024-04-02 09:42:39

2023-06-01 07:50:42

JSDocTypeScriptAPI

2025-02-21 08:48:16

Typescript內(nèi)置聯(lián)合類型

2009-02-04 15:43:45

敏捷開發(fā)PHPFleaPHP

2015-02-05 13:27:02

移動(dòng)開發(fā)模塊SDK

2023-11-21 09:01:30

2019-03-18 15:15:41

QQ騰訊注銷

2022-02-26 09:39:19

前端SSR編譯

2011-02-28 10:38:13

Windows 8

2012-03-07 17:24:10

戴爾咨詢

2012-12-20 10:17:32

IT運(yùn)維

2009-06-12 15:26:02

2022-02-22 13:50:01

TypeScrip前端框架

2015-08-25 09:52:36

云計(jì)算云計(jì)算產(chǎn)業(yè)云計(jì)算政策

2013-01-11 18:10:56

軟件

2021-04-25 09:30:52

開發(fā)CSS 瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲综合精品 | 狠狠综合久久av一区二区小说 | 日韩欧美二区 | 久久精彩视频 | 久久精品色欧美aⅴ一区二区 | 97精品超碰一区二区三区 | 亚洲日韩欧美一区二区在线 | 日韩av在线中文字幕 | 免费看色| 欧美淫片| 亚洲午夜精品 | 五月天激情电影 | 91麻豆精品国产91久久久久久 | 国产福利小视频 | 国产在线拍偷自揄拍视频 | 自拍偷拍亚洲欧美 | 天天天天天操 | 91视频日本 | 蜜桃久久 | 精品久久久久久久 | 中文字幕电影在线观看 | 精品欧美一区二区在线观看视频 | 亚洲97| 欧美成人猛片aaaaaaa | 永久精品| 91精品国产综合久久久久久漫画 | 色性av | 国产精品影视在线观看 | 国产美女一区二区 | 一区二区三区四区电影 | 欧美一区二区三区在线视频 | 在线一区视频 | 91在线视频网址 | 一区二区三区精品在线视频 | www.色53色.com| 无码日韩精品一区二区免费 | 欧美一级片在线观看 | 日本久久福利 | 久久久久国产成人精品亚洲午夜 | 国产精品1区| 精品欧美 |