Как отключить лишние предложения автоматического импорта в VS Code / TypeScript? - PullRequest
0 голосов
/ 16 января 2019

У меня есть пакет npm, который поставляется с наборами, структура файла похожа на следующую:

./typings/index.d.ts * * 1004

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 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

UPD:

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/*", "*"]
    }
  }
}
...