typescript 如何从VS Code的自动导入建议中排除环境模块声明(如node:test)?

kmbjn2e3  于 2023-08-08  发布在  TypeScript
关注(0)|答案(1)|浏览(145)

我知道名为typescript.preferences.autoImportFileExcludePatterns(ref)的VS Code设置,我的本地VS Code使用的是支持该设置的最新TypeScript版本:


的数据
然而,在编写测试文件时,我无法阻止VS Code建议从node:test模块导入成员。对于记录,我使用vitest作为测试运行器,它的典型函数名与node:testdescribebeforeEachit)冲突。
我尝试了以下设置,但没有成功:

  1. "typescript.preferences.autoImportFileExcludePatterns": ["node:test"],

字符串
当然,node-test不是npm包,所以使用"**/node_modules/...some package name..."的经典示例在这里不适用。
已经有人参与进来了吗?

x7yiwoj4

x7yiwoj41#

VS Code添加了一个功能来记住建议选择(参见Remember suggestion selections #22839)。您可以看到完成问题的the related committhis related file。也就是说,如果你将VS Code设置为editor.suggestSelection或者"recentlyUsed",我想你可以通过选择你想要的建议来得到一个很好的解决方案。
要想做得更好(实际上从自动导入建议中排除特定的环境模块声明),我认为这不容易实现。node:testnode_modules/@types/node/index.d.ts中的环境模块声明,在.node_modules/@types/node/index.d.ts中由/// <reference path="test.d.ts" />引用,并且由于在node模块的package.json中使用"types": "index.d.ts"指定,该index.d.ts文件成为module resolution的一部分。我不知道有什么功能可以从自动导入中排除模块声明,而且您也不想增加模块--您想让它像不存在一样用于智能感知目的。
您可以尝试创建自己的@types/node包的修改副本,在其中编辑index.d.ts文件以删除执行/// <reference path="test.d.ts" />的行。
有一个名为typescript.preferences.includePackageJsonAutoImports的“核”VS Code设置,我不认为这是你想要的-使用它来禁用node:test导入建议也会禁用你想要导入的vitest模块的导入。

相关问题