vscode import import console = require ("console"); автоматически

import console = require("console");

console. << Я печатаю. и выше импортируется автоматически в VScode. Кто-нибудь знает, как это отключить?

(Я предполагаю, что это одно из моих расширений. Возможно, красивее.)

редактировать: это происходит только в среде React Typescript. не в Typescript без реакции.

Ответ 1

Отказ от ответственности: это не должно рассматриваться как "решение", но это самое простое/быстрое.

Этот ответ предполагает, что вы используете VSCode. Другие IDE должны быть похожими.

  1. Начните вводить console
  2. Нажмите ввод или введите . , позволяя IntelliSense добавить import console = require("console");
  3. Ctrl + клик (или F12, или Cmd + клик на macOS) по require("console")
  4. Закомментируйте этот код:
declare module "console" {
    export = console;
}

Ответ 2

Я также испытал это, и, похоже, проблема с функцией автоматического импорта в VSCode. Отключение всех расширений, похоже, тоже не уходит.

В качестве обходного пути вы можете отключить автоимпорт в настройках.

Если вы используете Javascript

"javascript.suggest.autoImports": false

Если вы используете Typescript

"typescript.suggest.autoImports": false

enter image description here

РЕДАКТИРОВАТЬ: сбой автоимпорта происходит из-за этого кода в пакете вниз по дереву зависимостей

declare module "console" {
    export = console;
}

Пакет может быть расположен либо в вашем локальном каталоге node_modules, либо в глобальном пакете, на который есть ссылка.

  1. Поиск в вашем локальном node_modules для declare module "console"
  2. Если вы найдете его в локальном пакете, запустите npm list [packageName] чтобы определить, какой пакет в package.json зависит от пакета с консольным кодом в нем.

Если вы не можете найти код в своих локальных node_modules, вы можете либо

  1. Исключите пакеты один за другим в package.json

  2. Поиск кода консоли в глобально установленных модулях, на которые могут ссылаться пакеты в вашем проекте

% USERPROFILE%\AppData\Roaming\npm\node_modules% USERPROFILE%\AppData\Local\Microsoft\TypeScript

Я знаю, что это не прямое решение, но я надеюсь, что оно поможет, в моем случае у меня была ссылка от узлаact-native-copilot → rimraf ->, в которой был консольный код. Удаление реакции-родного-второго пилота решило проблему.

Ответ 3

Если вы добавите фрагмент для вставки console.log и будете использовать его вместо этого, не будет автоимпорта "console"

https://code.visualstudio.com/docs/editor/userdefinedsnippets#_creating-your-own-snippets

вот мой фрагмент:

{
    "Print to console": {
        "prefix": "cl",
        "body": [
            "console.log('$1');",
        ],
        "description": "Log output to console"
    }
}

Ответ 4

Если я вам нравлюсь, забывает "cl", вы можете использовать несколько префиксов во фрагментах :)

{
    "Print to console": {
        "prefix": ["cl","co","con","cons","conso","consol","console", "console.l","console.lo","console.log"],
        "body": [
            "console.log($1);",
        ],
        "description": "Log output to console"
    }   
}

Ответ 5

Один из способов предотвратить это - изменить файл tsconfig.json, чтобы ограничить набор типов, которые автоматически импортируются в ваш проект.

У меня была такая же проблема, и я исправил ее, добавив:

types: []

в мой файл tsconfig.json. Это отключает TypeScript (и расширение VSCode) от автоматического импорта всех пакетов узлов, которые имеют @types/ в конфигурацию проекта. Это не мешает TS импортировать эти определения типов, если вы явно импортируете пакет, используя эти типы.

В моем конкретном случае определение console исходило от @types/node, которая была импортирована в проект как зависимость от Storybook. Тем не менее, мой проект был проектом webpack, предназначенным для запуска в браузере, поэтому импорт типов Node.js в мой исходный код не имел смысла. Базовый набор типов, которые вы хотели бы использовать в браузере, - это типы dom, а не типы узлов.

В зависимости от вашего проекта вам может понадобиться явно добавить набор пакетов базового типа в параметр types: ["dom", "react"] (types: ["dom", "react"] и т.д.). Тем не менее, в моем случае это оказалось ненужным, мой проект смог прекрасно скомпилироваться с пустым списком. И тенденция VSCode автоматически импортировать "консоль", похоже, полностью исчезла; Я не заметил никаких других побочных эффектов.

Более подробная информация о настройке типов в tsconfig.json здесь: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html.

Ответ 6

Начиная с версии VS Code 1.33, добавьте следующее в файл settings.json для редактора.

"editor.suggest.filteredTypes": {
    "console": false
},

Ответ 7

Самое элегантное решение, которое я нашел, - создать фиктивный файл console.d.ts где-нибудь в вашем проекте:

declare module 'console' {
    export = typeof import("console");
}

Это предотвратит автоматический импорт.

Кредиты: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436