wx.request 请求体和返回增加泛型
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- typescript
- 領域
- api
調査の方向性
wx.request の型宣言から始め、issue に示されている関連する ResponseCallback と PostTempOptions の定義を確認します。リクエストボディとレスポンスの型が現在どのように表現されているかを確認し、そのうえで、呼び出し側が追加の as casts を必要としないよう、両方をジェネリクスとして指定できることを確認します。
索引モデルが issue の本文から書いたものです。
説明
注意看代码中的 OUT 和 IN,这样做的好处是不需要额外的使用 as 语句了
async function CustomRequest<
OUT extends string | WechatMiniprogram.IAnyObject | ArrayBuffer =
| string
| WechatMiniprogram.IAnyObject
| ArrayBuffer,
IN extends string | WechatMiniprogram.IAnyObject | ArrayBuffer =
| string
| WechatMiniprogram.IAnyObject
| ArrayBuffer
>({ data, url, method }: PostTempOptions<IN>, options?: API.IRequestOptions): Promise<OUT> {
// 没有token就赋值,避免每次都从缓存中获取,缓存获取数据非常消耗时间
if (!token || options?.refreshToken) {
token = wx.getStorageSync('token');
}
return new Promise((resolve, reject) => {
// NOTE: 主要看这里,OUT请求回调,IN则是附带数据
wx.request<ResponseCallback<OUT>, IN>({
url: PREFIX + url,
header: { Authorization: 'Bearer ' + token },
method: method ?? 'POST',
data: data,
timeout: 2000,
success: (res) => {
if (res.data.error_code === 401) {
reject(new RequestError('请登录', 401))
}
if (!res.data.success) {
reject(new RequestError(res.data.error_message!, res.data.error_code!))
}
resolve(res.data.data)
},
fail: (err) => {
reject(err)
}
});
})
}
- 主要言語
- TypeScript
- スター
- 804
- フォーク
- 116
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
wechat-miniprogram/api-typings のほかの issue
-
getBLEMTU没有类型定义オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
wechat-miniprogram/api-typings の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
521xueweihan/HelloGitHub#4025 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
voidzero-dev/void#478 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
Small-tailqwq/dsh-deep-whale#207 ·
メンテナーはふだん 1 日以内に返信
-
The inspector never shows the instances field, so scaling out is unreachable対応中かも @Mrkewl が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
xevrion/breakscale#96 ·
メンテナーはふだん 4 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Flux159/mcp-server-kubernetes#384 ·