【发布时间】:2020-04-28 22:15:31
【问题描述】:
我有以下代码尝试执行 AJAX 请求,然后在一直保持类型的同时解码有效负载:
export function fetchJson<T>(url: string, data: FetchDataTypes): Promise<T> {
return new Promise((resolve, reject) => {
fetch(url, {})
.then((response: Response) => {
if (!response.ok) {
reject(response);
} else {
return response.text() as Promise<string>;
}
})
.then((text: string) => {
try {
resolve(JSON.parse(text) as T);
} catch (err) {
reject(err);
}
})
.catch((err: Promise<void>) => reject(err));
});
}
问题是eslint抛出这个错误:
期望在箭头函数consistent-return结束时返回一个值
我查看了文档,我很确定这是因为第一个 .then 回调在返回/不返回方面存在不一致。我试图改变我的代码,要么有回报,要么没有回报,但我一生都无法弄清楚如何重写这段代码以让 eslint 再次快乐。
我能找到的所有相关问题都是开发人员忘记从映射器方法等返回的错误,而我找不到与我的场景相关的错误。
编辑:为了清楚起见,我希望能够像这样调用我的函数:
export const fetchSomeObject = (): Promise<SomeResponseType> =>
fetchJson('/api/some-endpoint', {
method: 'GET',
headers: {},
});
然后:
fetchSomeObject.then((response: SomeResponseType) => {
[...]
});
【问题讨论】:
标签: typescript eslint