7

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

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);

在这里,我得到了of的no-unsafe-assignment错误,以及第二行的调用错误。testEnvconst testEnvno-unsafe-callreadJsonSync

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

interface ITestEnv {
  // interface members
}
const testEnv: ITestEnv = readJsonSync(testEnvPath) as ITestEnv;

readJsonSync但是,我仍然不知道如何在通话中摆脱第二个。

4

2 回答 2

3

ESlint 无法解析模块的绝对导入,
这使其将您的类类型推断为any.

确保在ESlintbaseUrl使用的tsconfig.json文件中定义正确。paths

@see Typescript – 模块解析

于 2021-01-14T16:01:42.967 回答
1

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

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

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

于 2020-06-11T15:25:34.597 回答