ESLint + TypeScript ESlint;如何使函数返回承诺

问题描述 投票:0回答:1

我有 ESLint + TypeScript ESlint,它们在项目中没有改变任何规则。在该项目中有一个函数,我想返回一个承诺,即

axios.get
调用,但我无法让它通过 linting 规则。

当我这样做时:

import { ResponseType } from 'axios'

const getPosts = async (): Promise<ResponseType> => {
  return axios.get("https://jsonplaceholder.typicode.com/posts")
}

我得到:

在这种情况下需要返回等待的承诺。 eslint(@typescript-eslint/return-await)

所以,我添加了等待:

import { ResponseType } from 'axios'

const getPosts = async (): Promise<ResponseType> => {
  return await axios.get("https://jsonplaceholder.typicode.com/posts")
}

但这会导致另一个错误:

在返回值上冗余使用

await
。 eslint(无返回等待)

我也尝试摆脱异步,但这导致:

返回 Promise 的函数必须是异步的。 eslint(@typescript-eslint/promise-function-async)

我怀疑默认的 ESLint 与 TypeScript ESlint 冲突,并假设有其他解决方案来重写该函数,以便它可以同时通过。重写该函数的其他选项是什么?

这里是两者的文档:

https://eslint.org/docs/latest/rules/no-return-await

https://typescript-eslint.io/rules/return-await

typescript promise eslint
1个回答
1
投票

总原则:

如果某些 JS eslint 规则与 TS 规则冲突,请禁用 JS 规则

很多情况下 TS 规则可能会与同名的 JS 规则冲突

在您的情况下,您的规则与应该被禁用的相反规则冲突
找出它被启用的原因,或者只是禁用它然后忘记

© www.soinside.com 2019 - 2024. All rights reserved.