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

Vite,Vue3項目,添加Jsconfig.Json和類型定義,讓你的IDE更智能

開發 前端
JS的弱類型機制,使編輯器很難提供更好的智能感知和語法提示。那么,怎么辦呢?在過去,我通常單獨使用Jsdoc。但這次,我想做一個不同的嘗試,使用TS類型定義和Jsdoc協作。

我們的新項目是基于vite + vue3的,使用的編程語言是JavaScript。我們的團隊除了我,對typescript都不熟悉,他們覺得學習typescript有點困難。

眾所周知,JS的弱類型機制,使編輯器很難提供更好的智能感知和語法提示。那么,怎么辦呢?在過去,我通常單獨使用jsdoc。但這次,我想做一個不同的嘗試,使用TS類型定義和jsdoc協作。

我們只需在項目根目錄創建一個jsconfig.json文件即可,基本配置如下。我們的項目中使用了element-plus組件庫,為了提供更好的智能感知,我添加了element-plus的TS類型定義到compilerOptions的types數組。

{
"compilerOptions": {
"types": ["element-plus/global"],
"lib": ["ESNext", "DOM"]
},
"exclude": ["node_modules", "dist"]
}

大家不要使用target配置JS語言版本,否則會出現各種各樣的問題,會造成智能感知失靈,一定要使用lib配置。我以前踩過這些坑,網上找不到任何解決方案,我通過查看axios的tsconfig.json,尋找到了解決方案。

為了便于管理,我在項目根目錄創建了一個typings文件夾,每個模塊的類型定義用一個單獨的TS文件,使用命名空間來管理,例子如下。

// misc.d.ts文件
declare namespace misc {
/** 日志查詢參數 */
type LogQueryParams = common.PageParams & {
operation: string,
userId: number,
loggedTime0: string,
loggedTime1: string,
loggedAddr: string
}

/** 日志 */
type Log = {
id: number,
args: string,
loggedAddr: string,
loggedTime: number,
method: string,
operation: string,
result: string,
resultOk: boolean,
userId: number
}
}

現在,我們在js文件中使用上面的類型定義。我們的一些所有模塊公用的類型定義都在common.d.ts文件中編寫。

下面的多行注釋使用了jsdoc語法,我們也叫它文檔注釋。vscode,webstorm等IDE都支持jsdoc語法。

/**
* 獲取日志分頁
* @param {misc.LogQueryParams} params
* @returns {common.PageDataResPromise<misc.Log>}
*/
export const getLogByPage = params => request('/api/misc/op/traces', { params })

當我們將鼠標指針移入函數名時,編輯器給出了智能提示。告訴我們,該函數期望接收一個misc.LogQueryParams類型的參數,返回common.PageDataResPromise<misc.Log>類型的值。

當我們調用該函數,輸入參數的時候,編輯器給出了非常智能的提示。這是不是很酷?

童鞋們都學會了嗎?

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-10-18 10:49:03

Actions異步函數

2022-08-15 07:34:36

vite項目Vue3

2022-01-13 08:13:14

Vue3 插件Vue應用

2021-08-19 08:15:51

vue3vite前端可視化

2021-03-24 08:00:44

項目Vue 3Typescript

2021-05-12 08:57:56

項目搭建工具

2022-07-28 08:26:18

Vue3Uni-appVite

2021-11-30 08:19:43

Vue3 插件Vue應用

2020-11-06 08:54:43

Vue 3.0函數代碼

2022-07-27 08:40:06

父子組件VUE3

2022-04-07 08:06:32

viteVue3項目

2021-03-30 07:11:22

Vue3parcel-vue-工具

2024-12-05 10:53:02

JSON數據服務器

2020-08-13 10:11:14

物聯網安全智能家居物聯網

2021-04-26 11:09:56

物聯網智能家居技術

2021-09-26 00:24:58

開發項目TypeScript

2022-03-07 11:15:25

Pinia狀態庫vue3

2024-12-25 15:31:31

2020-07-22 15:15:28

Vue前端代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区欧美| 免费激情 | 在线观看三级av | 国产精品福利在线观看 | 久久99精品国产99久久6男男 | 亚洲综合大片69999 | 成人av网站在线观看 | 黄色成人免费看 | 国际精品鲁一鲁一区二区小说 | 欧美精品一区二区蜜桃 | 亚洲网站在线观看 | 午夜精品久久久 | 自拍视频在线观看 | 韩国毛片一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 精品欧美黑人一区二区三区 | av片免费 | 91精品国产美女在线观看 | 久久国产精品免费一区二区三区 | 国产日韩欧美一区二区 | 成人精品在线观看 | 人人干人人干人人干 | 国产自产21区 | 国产欧美精品一区二区 | 成人免费视频在线观看 | 午夜精品一区二区三区在线视 | 欧美日韩视频在线 | 欧美h版| 国产清纯白嫩初高生视频在线观看 | 最新中文字幕在线 | 欧美性a视频 | 欧美在线一区视频 | 日本激情视频网 | 国产精品日韩 | 一区二区三区小视频 | 国产成人小视频 | 国产精品视频999 | 欧美日韩精品一区二区三区四区 | 亚洲视频免费观看 | www.中文字幕av | 日韩成人在线观看 |