api-create-toolkit 一个快速,简单的api生成工具
我们很多项目都使用了一个函数来生成api,配套也有一些命令行工具可以做到直接生成api文件
这个函数是这样使用的
但是这样存在一个问题,就是在我们调用的时候,api.user.login无法有效提示出参数的类型,我们期望的是创建好的api,既可以做到api.a.b这样的提示,也可以做到api.a.b()函数调用时输入参数的提示,这样我们就需要将createApi方法使用TS来重写一下
我们首先需要改写一个这个函数
这样函数的返回值其实是一个新的对象,和传入的对象相比,只是将字符串替换成了一个Request函数,要做到有效的提示,我们就需要根据传入的参数类型去推断出返回值类型
因为传入参数是一个不确定的对象,所以我们需要使用泛型,在函数调用时传入参数的类型。我们传入的是如下的一个对象,在TS中我们可以使用typeof来获取到它的类型,我们可以在使用时将它传入
这样,我们就可以根据传入的类型去推导返回值的类型,因为我们传入的对象层级不定,所以这里需要用到递归
现在还缺少一个Request类型,因为使用的是axios,我们需要用到一些它提供的类型。我们从传入的对象中获取到了method和url,所以就从AxiosRequestConfig中将method和url剔除掉,然后添加了一个path的属性,用于path传参时补足url路径。
这样我们写好的方法基本就是这样的
重写后的函数,可以根据传入的apiObj提示出路径,也可以在最终调用方法时提示出参数的各种类型,做了一些改动后将其发布到npm,可以搜索api-create-toolkit进行安装使用。

