使用@ typescript-eslint / no-unsafe- *规则的新eslint错误

时间:2020-06-11 14:12:35

标签: javascript typescript eslint typescript-eslint

在将它们添加到某些现有项目中时遇到了麻烦。例如,我在开发的模块中有一个类:

export default class ClassName {
  // Class members
}

现在我将其导入另一个项目:

import ClassName from 'modulename';

const object = new ClassName();

我在这条线上遇到2个错误。

object中的const object上:

error  Unsafe assignment of an any value                @typescript-eslint/no-unsafe-assignment

new中的new ClassName上:

error  Unsafe construction of an any type value         @typescript-eslint/no-unsafe-call

如何避免这些错误?!我真的很想能够遵循这些规则,因为我认为它们会非常有用!

谢谢。


这是另一个例子:

import { readJsonSync } from 'fs-extra';
const testEnv = readJsonSync(testEnvPath);

在这里,我在no-unsafe-assignment的{​​{1}}上遇到了testEnv错误,在第二行的const testEnv调用中得到了no-unsafe-call错误。

我可以使用以下代码摆脱第一个代码:

readJsonSync

但是,我仍然不知道如何摆脱interface ITestEnv { // interface members } const testEnv: ITestEnv = readJsonSync(testEnvPath) as ITestEnv; 通话中的第二个问题。

2 个答案:

答案 0 :(得分:1)

在第一种情况下,构造函数只会出现一个错误,该错误级联到const赋值。您的类实现中有一些东西使类型推断被推断为any

不说您的代码不正确。可能是,但是有(open issue on Github)报告构造函数被同一规则错误地标记。

在第二个问题上,您是否添加了@type/fs-extra作为项目依赖项?许多npm软件包本身没有类型。类型由某人创建并添加到 @types库。在这种情况下,必须@types/package_name作为依赖项单独添加。

答案 1 :(得分:0)

ESlint 无法解析你的模块的绝对导入,
这使得它可以将您的类类型推断为 any

确保 ESlint 使用的 tsconfig.json 文件中的 baseUrlpaths 定义正确。

@see Typescript – Module Resolution