繁体   English   中英

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

[英]New eslint errors with the @typescript-eslint/no-unsafe-* rules

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

export default class ClassName {
  // Class members
}

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

import ClassName from 'modulename';

const object = new ClassName();

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

const object object的 object 上:

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

newnew ClassName中:

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

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

谢谢。


这是另一个例子:

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

在这里,我在const testEnvtestEnv上得到了no-unsafe-assignment错误,在第二行的readJsonSync调用中得到了no-unsafe-call错误。

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

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

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

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

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

@see Typescript – 模块分辨率

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM