带有@typescript-eslint/no-unsafe-* 规则的新 eslint 错误

ner*_*ger 6 javascript typescript eslint typescript-eslint

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

export default class ClassName {
  // Class members
}
Run Code Online (Sandbox Code Playgroud)

现在我将它导入到另一个项目中:

import ClassName from 'modulename';

const object = new ClassName();
Run Code Online (Sandbox Code Playgroud)

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

objectconst object

error  Unsafe assignment of an any value                @typescript-eslint/no-unsafe-assignment
Run Code Online (Sandbox Code Playgroud)

newnew ClassName

error  Unsafe construction of an any type value         @typescript-eslint/no-unsafe-call
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这些错误?!我真的很希望能够遵守这些规则,因为我认为它们非常有用!

谢谢。


这是另一个例子:

error  Unsafe assignment of an any value                @typescript-eslint/no-unsafe-assignment
Run Code Online (Sandbox Code Playgroud)

在这里,我得到no-unsafe-assignment的错误testEnvconst testEnvno-unsafe-call错误的readJsonSync第二行调用。

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

error  Unsafe construction of an any type value         @typescript-eslint/no-unsafe-call
Run Code Online (Sandbox Code Playgroud)

但是,我仍然无法弄清楚如何摆脱readJsonSync通话中的第二个。

小智 0

在第一种情况下,只有一个来自构造函数的错误,该错误级联到 const 赋值。您的类实现中的某些内容正在将类型推断推断为any.

并不是说你的代码不正确。可能是这样,但有一个(Github 上的未解决问题)报告构造函数被同一规则错误标记。

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