api-create-toolkit 一個快速,簡單的api生成工具
我們很多項目都使用了一個函數(shù)來生成api,配套也有一些命令行工具可以做到直接生成api文件
這個函數(shù)是這樣使用的
但是這樣存在一個問題,就是在我們調(diào)用的時候,api.user.login無法有效提示出參數(shù)的類型,我們期望的是創(chuàng)建好的api,既可以做到api.a.b這樣的提示,也可以做到api.a.b()函數(shù)調(diào)用時輸入?yún)?shù)的提示,這樣我們就需要將createApi方法使用TS來重寫一下
我們首先需要改寫一個這個函數(shù)
這樣函數(shù)的返回值其實是一個新的對象,和傳入的對象相比,只是將字符串替換成了一個Request函數(shù),要做到有效的提示,我們就需要根據(jù)傳入的參數(shù)類型去推斷出返回值類型
因為傳入?yún)?shù)是一個不確定的對象,所以我們需要使用泛型,在函數(shù)調(diào)用時傳入?yún)?shù)的類型。我們傳入的是如下的一個對象,在TS中我們可以使用typeof來獲取到它的類型,我們可以在使用時將它傳入
這樣,我們就可以根據(jù)傳入的類型去推導(dǎo)返回值的類型,因為我們傳入的對象層級不定,所以這里需要用到遞歸
現(xiàn)在還缺少一個Request類型,因為使用的是axios,我們需要用到一些它提供的類型。我們從傳入的對象中獲取到了method和url,所以就從AxiosRequestConfig中將method和url剔除掉,然后添加了一個path的屬性,用于path傳參時補足url路徑。
這樣我們寫好的方法基本就是這樣的
重寫后的函數(shù),可以根據(jù)傳入的apiObj提示出路徑,也可以在最終調(diào)用方法時提示出參數(shù)的各種類型,做了一些改動后將其發(fā)布到npm,可以搜索api-create-toolkit進行安裝使用。

