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 并点击 getActivities 时,VSCode 会跳转到 refreshTokenAsNeeded 的定义,
const activities = await getActivities(user);有没有办法指示 VS Code 不这样做,也许使用不同的类型注解?