在将它们添加到某些现有项目中时遇到了麻烦。例如,我在开发的模块中有一个类:
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;
通话中的第二个问题。
答案 0 :(得分:1)
在第一种情况下,构造函数只会出现一个错误,该错误级联到const赋值。您的类实现中有一些东西使类型推断被推断为any
。
不说您的代码不正确。可能是,但是有(open issue on Github)报告构造函数被同一规则错误地标记。
在第二个问题上,您是否添加了@type/fs-extra作为项目依赖项?许多npm软件包本身没有类型。类型由某人创建并添加到 @types库。在这种情况下,必须@types/package_name
作为依赖项单独添加。
答案 1 :(得分:0)
ESlint 无法解析你的模块的绝对导入,
这使得它可以将您的类类型推断为 any
。
确保 ESlint 使用的 tsconfig.json 文件中的 baseUrl
和 paths
定义正确。