typescript - 我如何指示 VS Code 跳轉到柯里化函數的定義,而不是柯里化過程函數
我有一個 API 客戶端,它聲明了多個用於獲取數據的方法。
在這些函數中,我需要在存取權杖過期時處理刷新它。
為了做到這一點,我創建了一個處理令牌刷新的柯里化函數,它看起來像這樣:
const refreshTokenAsNeeded = <Data extends StravaTokenData, Result>(
fn: (data: Data) => Promise<Result>
) => {
return async (data: Data): Promise<Result> => {
const { refreshToken, accessToken, expiresAt } = data;
if (data.expiresAt < unixTime()) {
logger.info("Token expired, fetching new one");
const {
refresh_token: refreshToken,
access_token: accessToken,
expires_at: expiresAt,
} = await getNewRefreshToken(data.refreshToken);
await updateRefreshToken(data.refreshToken, {
refreshToken,
accessToken,
expiresAt,
});
logger.info("Token saved");
}
return fn({
...data,
refreshToken,
accessToken,
expiresAt,
});
};
};
export const getActivities = refreshTokenAsNeeded<
StravaTokenData,
StravaActivity[]
>(async ({ expiresAt, refreshToken, accessToken }) => {
const { data } = await axios.get<StravaActivity[]>(
`${stravaApiBaseUrl}/athlete/activities`,
{
headers: {
authorization: `Bearer ${accessToken}`,
},
}
);
return data;
});
這帶來的一個不幸副作用是,當我 Cmd+Click getActivities 時,VSCode 會跳到 refreshTokenAsNeeded 的定義,
const activities = await getActivities(user);有沒有辦法指示 VS Code 不這麼做,也許使用不同的類型註解?