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前端可视化

2022-07-28 08:26:18

Vue3Uni-appVite

2021-05-12 08:57:56

项目搭建工具

2021-03-24 08:00:44

项目Vue 3Typescript

2021-11-30 08:19:43

Vue3 插件Vue应用

2022-07-27 08:40:06

父子组件VUE3

2020-11-06 08:54:43

Vue 3.0函数代码

2022-04-07 08:06:32

viteVue3项目

2021-03-30 07:11:22

Vue3parcel-vue-工具

2021-09-26 00:24:58

开发项目TypeScript

2022-03-07 11:15:25

Pinia状态库vue3

2024-07-15 08:02:37

2021-04-26 11:09:56

物联网智能家居技术

2020-08-13 10:11:14

物联网安全智能家居物联网

2021-11-19 09:29:25

项目技术开发

2021-12-01 08:11:44

Vue3 插件Vue应用
点赞
收藏

51CTO技术栈公众号