我正在纠结后端 API 的类型怎么定义归类的好,看了这个项目,他讲后端所有类型定义在了一个 Api.d.ts 文件中,地址: https://github.com/soybeanjs/soybean-admin/blob/main/src/typings/api.d.ts 。
然后就类似下面这样使用。
1 、全写到一个文件是否可行,利弊?
2 、这么定义和使用是否是最佳方案,有和利弊?
3 、Typescrip 大神们都是怎么定义和使用的?
export function fetchGetUserList(params?: Api.SystemManage.UserSearchParams) {
return request<Api.SystemManage.UserList>({
url: '/systemManage/getUserList',
method: 'get',
params
});
}
1
jerrry 317 天前
如果一个项目有 1000 个类型,都写到一个文件如何维护?
|
2
supuwoerc 317 天前
按照目录来建
|
3
zogwosh 317 天前
用 namespace,把类的 api 接口和类型放在一起,同时还能避免 ts 类型过多引起的编辑器性能问题
|
6
SayHelloHi 317 天前
|
7
hua123s 317 天前 via Android 1
拜托这种东西不是应该自动生成?难道还手写?
https://github.com/acacode/swagger-typescript-api https://github.com/anymaniax/orval 看看这些吧 |
8
nomagick 317 天前
看一下 github 的 npm 库, 他家的 api 都是生成了对应 d.ts 的
|
11
tlerbao OP @hua123s #10 简单搜了一下,是有 swagger-php 的,都是一个人做项目全栈,菜鸡,所以这些都没接触过,大致应该就是在控制器里写注解,然后通过类似 swagger-php 生成接口文档或 ts 类型啥的,对吧。
|
14
liuw666 317 天前 via iPhone
按模块和页面在一块,通用的往上提,反正我是这样写的
|
16
fd9xr 316 天前 via iPhone
swagger… 呕吐
|
17
fd9xr 316 天前 via iPhone
.d.ts 不是这么用的
|
19
ragnaroks 316 天前
文件夹做 namespace 分层和分拆,类似 go 的组织方式。很多项目(特别是前端)的 d.ts 是自动生成的。
|
20
dssxzuxc 258 天前
如果类型全是一次性生成的,全放一个文件没有任何问题,没必要考虑维护,毕竟是脚本生成的东西,要重构/修改都很简单。
如果无法一次性生成,或者考虑到频繁的单独维护,建议把文件拆开,用文件夹把不同模块的 api 分开 -- A |-- index.ts |-- type.d.ts -- B |-- index.ts |-- type.d.ts -- C |-- index.ts |-- type.d.ts 楼上说 d.ts 不是这样用的,确实有一定道理,之前接触到的项目接口类型定义都是写.ts 里的,但是如果不是太多人协作的话我还是强烈建议用 d.ts 方式,省了无数麻烦,只要 namespace 规划合理就行 |