为已有文件添加 d.ts 声明
文件 添加 声明 TS 已有
2023-09-11 14:17:02 时间
为已有文件添加 d.ts 声明
mockm 的配置项已添加到数十项,很多时候连我都记不起哪个选项是做什么的,有哪些使用方式,参数分别是什么……
解决办法就是去查文档。但是查文档知道也只是知道,写起来还不顺手,因为不会自动提示。
借助 ts 的声明文件,可以做到这一点。在为 mockm 的配置文件编写声明文件的时候,从0开始积累了一些经验,以下做一个简单的记录:
-
vscode 可利用 jsdoc 的 @type 参数来指定一个声明文件
/** @type {import('mockm/@types/config').Config} */ const config = {}
-
编写声明时, 多个类型应避免冲突, 冲突后就自动变成 any 了
-
函数最好用括号包裹
type Config = ConfigObj | ((util: ConfigFnArg) => ConfigObj)
-
可以通过 import 引用其他库的类型定义, 但要注意引用的是类型定义,而不是库的功能
import { AxiosStatic as axios } from 'axios' // 对 // import axios from 'axios' // 错
-
可以实现一些类似动态指定类型的效果
比如下面根据 api 的 key 前缀不同, 所能使用的函数不同.
import { Method } from 'axios'
type WsUrl = `ws${string}`
type HttpUrl = `${Method}${string}`
type Api = {
[key: WsUrl]: ((ws: WebSocket, req: Request) => void),
[key: HttpUrl]: ((req: Request, res: Response, next?: () => void) => void),
}
export {
Api
}
/** @type {import('./api').Api} */
const api = {
'ws /wsecho'(ws, req) {
ws.send(`hello~`)
},
'get /user'(req, res) {
res.json({msg: `ok`})
},
}
参考
相关文章
- phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法
- IIS错误:未能加载文件或程序集“sapnco”或它的某一个依赖项
- VA助手添加扩展文件后缀名
- excel怎么设置密码保护?Excel文件添加密码保护教程
- 向文件中写入追加的数据
- python实现下载文件路径自动添加(1)的递增路径
- Linux 批量查找并替换文件夹下所有文件的内容
- 解决关于win7共享文件连接数限制的问题
- ajax上传文件及进度显示
- python实现下载文件路径自动添加(1)的递增路径
- 流媒体测试笔记记录之————解决问题video.js 播放m3u8格式的文件,根据官方的文档添加videojs-contrib-hls也不行的原因解决了
- matlab 使用文件选择对话框添加点云
- WCF HTTP 错误 404.3 - Not Found(由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。)
- web.xml引用外部xml文件。以及org.xml.sax.SAXException
- 下列哪项能正确遍历文件夹内所有文件?
- Flask使用bootstrap为HttpServer添加上传文件功能
- iTextSharp之pdfRead(两个文件文本内容的比较,指定页数的pdf截取,水印的添加)
- 【Android 安装包优化】Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )
- Linux删除以破折号开头的文件Windows在批处理文件来删除隐藏属性
- Pycharm中下载 requirement.txt 的文件并添加镜像源
- 181:vue+openlayers 加载解析geojson文件,给每一个feature(非整体)添加渐变颜色
- 17.5 添加额外的文件
- VC++给软件添加异常捕获模块生成dump文件(附源码)
- Qt 添加 QtNetwork 库文件
- QT 资源文件的添加
- QT打印窗口、退出、设置字体及颜色、设置时间、控件实现系统函数、添加资源文件(菜单图片)、工具栏添加图片
- 编辑修改docker中容器的文件