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

Jsdoc的高級用法:根據(jù)函數(shù)第一個參數(shù),來確定剩余參數(shù)怎么傳

開發(fā) 前端
本篇文章,我們來看一個高級點的用法。我們來實現(xiàn)一個功能:根據(jù)函數(shù)的第一個參數(shù),來確定剩余參數(shù)怎么傳。

jsdoc也叫文檔注釋,是JS開發(fā)中的一把利器,主要用于為JS添加類型聲明,這樣我們就可以像寫TS一樣寫JS了。

我之前寫過一篇文章,講述了jsdoc的基礎(chǔ)用法。本篇文章,我們來看一個高級點的用法。我們來實現(xiàn)一個功能:根據(jù)函數(shù)的第一個參數(shù),來確定剩余參數(shù)怎么傳。

我想實現(xiàn)如下函數(shù),該函數(shù)用于向父窗口發(fā)送消息。它可以接收不確定個數(shù)的參數(shù),其中第一個參數(shù)是eventType,該參數(shù)有固定的幾個可選值,剩余參數(shù)根據(jù)eventType的值來確定。

const sendEventToParentWindow = (eventType, ...args) => {
window.postMessage(
JSON.stringify({ type: eventType, payload: args })
)
}

首先,我們需要聲明一個類型

請看如下代碼。其中,@typedef 用于聲明一個類型,@property 用于聲明該類型包含的字段。

/**
* @typedef CallEvent
* @property {[calltype: string, telno: string, callid: string, queid: string, uudata: string]} OnAuthSuccess
* @property {[calltype: string, telno: string, callid: string, queid: string, uudata: string]} OnCalling
* @property {[calltype: string, telno: string, callid: string, queid: string, recfile: string, uudata: string]} OnCallConnect
* @property {[calltype: string]} OnCallHangup
* @property {[]} changeSeatState
* @property {[]} changeIVR
* @property {[]} changeConsult
* @property {[]} socketConnected
* @property {[telno: string, exinfo: string]} OnCustomCall
* @property {[errcode: string]} OnCallReturn
*/

然后,我們來為以上函數(shù)添加類型聲明。

請看如下代碼。其中,@template 用于聲明泛型類型,我們定義了一個泛型T,它的值取自CallEvent對象的鍵。@param 用于聲明函數(shù)參數(shù)的類型,eventType的類型為泛型T,args的類型為CallEvent[T],該類型由T的值決定。這個聲明,大家都能理解嗎?

/**
* @template {keyof CallEvent} T
* @param {T} eventType
* @param {CallEvent[T]} args
*/
const sendEventToParentWindow = (eventType, ...args) {}

現(xiàn)在,我們來調(diào)用以上函數(shù)試一試

當(dāng)我們輸入括號后,編輯器提示我們,該函數(shù)有7種傳參方式。

當(dāng)我們輸入引號后,編輯器提示出了第一個參數(shù)期望接收的值。

當(dāng)我們輸入第一個參數(shù)后,編輯器給出了后面參數(shù)的提示,告訴我們還需5個參數(shù),以及每個參數(shù)期望的類型。

當(dāng)我們將changeIVR作為第一個參數(shù)時,編輯器提示我們,后面沒有需要傳的參數(shù)了。

大家說,是不是很酷?JS中很多拼寫錯誤都不會報錯,這增加了排查問題的難度。有了jsdoc,我們的拼寫錯誤將大幅減少。由于有了編輯器的智能提示,我們不需要把整個單詞都敲出來,這樣寫起來更爽了,不是嗎?

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

2024-10-25 16:07:39

Python函數(shù)

2013-10-30 22:10:28

Clouda程序

2022-10-17 10:28:05

Web 組件代碼

2020-11-13 07:08:51

Spring Boot應(yīng)用Spring

2010-07-30 14:58:06

Flex應(yīng)用

2011-03-21 14:24:13

Debian 6

2013-01-14 09:44:58

JavaScriptJSJS框架

2011-03-03 21:04:08

bug程序員

2012-02-08 11:15:38

HibernateJava

2023-09-21 22:43:17

Django框架

2021-04-07 13:38:27

Django項目視圖

2024-04-02 09:42:39

2019-11-21 10:20:05

SQL錯誤用法數(shù)據(jù)庫

2010-03-15 10:37:46

Pthon腳本

2021-11-02 08:00:00

機器學(xué)習(xí)API技術(shù)

2025-05-28 09:04:00

谷歌AI搜索

2024-06-07 08:59:35

2011-12-29 15:18:54

開放平臺

2012-05-25 15:20:38

XNA

2023-05-19 08:49:58

SQLAlchemy數(shù)據(jù)庫
點贊
收藏

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

主站蜘蛛池模板: 久久精品一级 | av网站免费 | 国产9 9在线 | 中文 | 国产 日韩 欧美 在线 | 视频一区二区在线观看 | 成人毛片一区二区三区 | 综合久久av | 蜜桃视频在线观看免费视频网站www | 美女久久| 狠狠操狠狠搞 | 日本三级全黄三级三级三级口周 | 亚洲成人午夜电影 | 日韩精品在线免费观看视频 | 中文字幕成人在线 | 98成人网| www.激情.com| 国产成人精品免费视频 | 久久久www | 亚洲一区二区三区在线视频 | 69av网 | 国产精品一区在线观看 | 精品婷婷| 国产在线aa | 日韩靠逼| 国产一区二区视频免费在线观看 | 国产高清精品一区二区三区 | 一区在线观看 | a级在线免费观看 | 国产日产精品一区二区三区四区 | 日韩免费激情视频 | 亚洲美乳中文字幕 | 97国产在线视频 | 午夜资源 | 欧美精品1区2区 | 欧美久久一区二区三区 | 久久久.com | 国产在线91 | 亚洲男女视频在线观看 | 国产激情| 精品国产欧美一区二区三区成人 | 欧美另类视频在线 |