如何在 VS Code / TypeScript 中禁用多余的自动导入建议?

Posted

技术标签:

【中文标题】如何在 VS Code / TypeScript 中禁用多余的自动导入建议?【英文标题】:How to disable excess auto import suggestions in VS Code / TypeScript? 【发布时间】:2019-06-10 14:13:44 【问题描述】:

我有一个带有类型的 npm 包,文件结构类似于以下:

./typings/index.d.ts:

export  ISomeInterface  from './something';

./typings/something.d.ts:

/*
  This interface is used by the package internally,
  so I can't simply remove the export.
*/
export interface ISomeOtherInterface 
  someField: number;


export interface ISomeInterface 
  someObject: ISomeOtherInterface;

./package.json:

"typings": "./typings/index.d.ts"

问题是每当我输入类似的东西时

const a: ISome...

VS Code 的 IntelliSense 向我展示了两个建议:

| Auto import ISomeInterface from 'my-package'
| Auto import ISomeOtherInterface from 'my-package/typings/something'

防止 VS Code 自动提示第二次导入的正确方法是什么?

typescript@3.2.2, VSCode@1.30.2

更新:

library tsconfig(用于为库生成类型的那个):


  "compilerOptions": 
    "target": "es5",                          
    "module": "esnext",                     
    "lib": ["dom", "es2016", "esnext"],                             
    "jsx": "react",  
    "importHelpers": true,
    "strict": true,                           
    "noImplicitAny": true,                 
    "strictNullChecks": true,              
    "strictFunctionTypes": true,           
    "strictBindCallApply": true,           
    "strictPropertyInitialization": true,  
    "noImplicitThis": true,                
    "alwaysStrict": true,                  
    "noUnusedLocals": true,                
    "noImplicitReturns": true,             
    "noFallthroughCasesInSwitch": true,    
    "moduleResolution": "node",            
    "allowSyntheticDefaultImports": true,  
    "esModuleInterop": true,
    "declaration": true,
    "emitDeclarationOnly": true,
    "rootDir": "src",
    "outDir": "typings"                   
  ,
  "include": [
    "src/lib/**/*.ts",
    "src/lib/**/*.tsx"
  ],
  "exclude": [
    "node_modules",
    "dist",
    "typings",
    "src/**/*.spec.ts",
    "src/**/*.spec.tsx"
  ]

project tsconfig(使用库的项目中使用的那个):


  "compilerOptions": 
    "target": "es5",                          
    "module": "esnext",                     
    "lib": ["dom", "es2016", "esnext"],                             
    "jsx": "react",
    "importHelpers": true,
    "strict": true,                           
    "noImplicitAny": true,                 
    "strictNullChecks": true,              
    "strictFunctionTypes": true,           
    "strictBindCallApply": true,           
    "alwaysStrict": true,
    "noUnusedLocals": true,              
    "noImplicitReturns": true,             
    "noFallthroughCasesInSwitch": true,    
    "moduleResolution": "node",            
    "baseUrl": "./",
    "allowSyntheticDefaultImports": true,  
    "esModuleInterop": true,
    "paths": 
      "*": ["node_modules/@types/*", "*"]
    
  

【问题讨论】:

你能和我们分享你的 tsconfig.json 吗? @Vincenzo 当然,原帖现在包含两个配置 【参考方案1】:

我能想到的两件事。

    在第一个 tsconfig 中,尝试将 outFile 设置为 index.d.ts。它应该只生成 1 个声明文件。

    尝试从第二个 tsconfig 中删除它

"paths": 
  "*": ["node_modules/@types/*", "*"]

【讨论】:

以上是关于如何在 VS Code / TypeScript 中禁用多余的自动导入建议?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code (VS Code) 上调试用 Typescript 编写的 Express 应用程序

如何使用 TypeScript 在 VS Code 中找到模块“fs”?

如何安装 TypeScript 定义文件,以便始终由 VS Code 加载?

在 VS Code 和 TypeScript 中调试 Azure DevOps 自定义任务时如何设置输入变量

如何在 VS Code 中为模板中的 vue 道具启用 Typescript 打字和智能感知?

如何在 VS Code 中使用 Typescript 定义为我自己的 Javascript 服务获取 Intellisense?