2
// I get @typescript-eslint of [Unexpected any. Specify a different type.eslint(@typescript-eslint/no-explicit-any)]

const funcToGetOnlineData: (url: string) => any = () => {
    // const httpData = (some processes to retrieve http request data)
    // return httpData;
};

funcToGetOnlineData('http://getsomedata.com');

我知道将返回值转换any为不是一个好习惯。但是,有时我们确实需要这个。即通过HTTP 请求获取形状未知的数据。在不禁用这些行的 ESlint 规则的情况下,是否有任何标准方法/实践来摆脱这种情况?

4

3 回答 3

1

据我所知,你不能这样做。

但是,anyandunknown是 TypeScript 中的顶级类型,所以只需使用它unknown。所有可以赋值的值any也可以赋值给unknown

因此,您的选择似乎是:

  1. 禁用该行的 linting 规则,或者;
  2. 改为使用unknown

试图想出一些技巧来欺骗 linter 认为any没有被使用并不是一个好主意。

于 2020-03-25T03:15:25.680 回答
1

也许是这样的?

interface Article {
    items: []
}

function funcToGetOnlineDataV2<T>(url: string): Promise<T> {
    return fetch(url)
        .then((response: Response) => {
            return response.json();
        });
};

funcToGetOnlineDataV2<Article>('http://getsomedata.com').then((res: Article) => {
    console.log(res);
});
于 2020-03-17T05:21:47.927 回答
-1

为什么不直接抑制这样的警告:


  // tslint:disable-next-line: no-any
    const funcToGetOnlineData: (url: string) => any = () => {
    // const httpData = (some processes to retrieve http request data)
    // return httpData;
   };

于 2020-03-19T04:10:56.533 回答