我是Typescript的新手,所以也许我忽略了一些明显的东西,但是我无法使用AWS v3 JavaScript SDK而不触发看起来完全是虚假的@typescript-eslint警告。下面是一个简单的片段,它重现了一个不一致之处:
import { S3Client } from "@aws-sdk/client-s3";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
new S3Client({});
new DynamoDBClient({});
S3客户端的结构很好。没有警告。但是,DynamoDB客户端构造的最后一行生成ESLint: Unsafe construction of an any type value.(@typescript-eslint/no-unsafe-call)
这基本上是直接从他们的“hello dynamodb”文档中出来的。
这两个包都安装了,类型看起来基本相同,尽管我猜在配置类型的细节中可能隐藏了一些微妙之处(为了清晰起见稍微简化了):
export declare class S3Client extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, S3ClientResolvedConfig> {
readonly config: S3ClientResolvedConfig;
constructor(configuration: S3ClientConfig);
}
vs
export declare class DynamoDBClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, DynamoDBClientResolvedConfig> {
readonly config: DynamoDBClientResolvedConfig;
constructor(configuration: DynamoDBClientConfig);
}
它们看起来基本上是一样的。构造函数如何返回any
?太奇怪了
我的package.json
包含:
"dependencies": {
"@aws-sdk/client-dynamodb": "^3.351.0",
"@aws-sdk/client-s3": "^3.282.0",
...
2条答案
按热度按时间moiiocjp1#
我在使用这两个软件包的以下最新版本时没有发现此问题:
你能提供我可以研究的可复制代码吗?
nr9pn0ug2#
这似乎是一个构建/工具缓存问题。如果我从命令行运行eslint,我不会得到任何错误,但在WebStorm 2022.3.2中,即使我完全清除该行并重新键入,添加第二个副本,更改参数,将代码粘贴到同一项目的新文件中,eslint警告仍然存在。
我能够通过执行
File > Invalidate Caches... > Just Restart
来清除虚假警告。也许定期重启就足够了。复制(对于WebStorm)似乎是在执行相关包的
npm install
之前引用启用了eslint工具的类。安装软件包后,错误仍然存在***。不确定这是否是定义前的eslint的一般问题(我想很多人都会遇到这个问题!)),或者是AWS代码的复杂性引发了这个问题。留下这个问题,以防其他人使用WebStorm遇到同样的问题!