import console = require("console");
console.
<<我输入。及以上会自动在VScode中导入。有人知道如何禁用它吗?
(我认为这是我的扩展程序之一。可能更漂亮。)
编辑: 它仅在React Typescript环境中发生。没有反应就不会出现在打字稿中。
答案 0 :(得分:58)
免责声明:不应将其视为“解决方案”,但这是最简单/最快的。
此答案是假设您使用的是VSCode。其他IDE应该相似。
console
.
,允许IntelliSense添加import console = require("console");
require("console")
上按住Ctrl键并单击(或在MacOS上按Cmd并按Cmd并单击)declare module "console" {
export = console;
}
答案 1 :(得分:28)
我也经历了这一点,这似乎与VSCode中的“自动导入”功能有关。禁用所有扩展似乎也不会消失。
作为解决方法,您可以在设置中禁用自动导入。
如果您使用Javascript
“ javascript.suggest.autoImports”:错误
如果您使用打字稿
“ typescript.suggest.autoImports”:错误
编辑:错误的自动导入是由于依赖树中的程序包中的此代码而发生的
declare module "console" {
export = console;
}
该软件包可以位于您本地的node_modules目录中,也可以位于全局安装的参考软件包中。
declare module "console"
npm list [packageName]
以确定package.json中的哪个软件包依赖于其中包含控制台代码的软件包。如果您在本地node_modules中找不到代码,则可以
在package.json中一一消除软件包
在全局安装的模块中搜索控制台代码,这些模块可能会被您项目中的软件包引用
%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules %USERPROFILE%\ AppData \ Local \ Microsoft \ TypeScript
我知道这不是一个简单的解决方案,但希望对我有帮助,对于我来说,我有来自react-native-copilot-> rimraf->节点的引用,其中包含控制台代码。删除react-native-copilot可以解决此问题。
答案 2 :(得分:12)
如果您添加用于插入console.log
的代码段,而使用该代码段,则不会自动导入“控制台”
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"
}
}
答案 3 :(得分:7)
如果您喜欢我忘记了“ 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"
}
}
答案 4 :(得分:3)
防止这种情况发生的一种方法是修改tsconfig.json文件,以限制自动导入到项目中的类型集。
我遇到了同样的问题,并通过添加以下内容解决了该问题:
types: []
进入我的tsconfig.json文件。这样做是禁止TypeScript(以及VSCode的扩展)自动将与@types/
一起使用的所有节点包导入到项目配置中。如果您使用这些类型显式导入程序包,这不会阻止TS导入这些类型定义。
在我的特定情况下,console
的定义来自@types/node
,它是作为Storybook的依赖项导入到项目中的。但是,我的项目是一个webpack项目,旨在在浏览器中运行,因此将Node.js类型导入我的源代码中没有任何意义。您要在浏览器中使用的基本类型集是dom类型,而不是节点类型。
根据您的项目,您可能必须将一组基本类型的软件包显式添加到types参数(types: ["dom", "react"]
等)中。但是,在我看来这是不必要的,我的项目能够使用空列表进行编译。 VSCode自动导入“控制台”的趋势似乎已完全消失。到目前为止,我还没有发现其他不良反应。
有关tsconfig.json中设置类型的更多信息,请点击此处:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
答案 5 :(得分:2)
我找到的最优雅的解决方案是在项目的某个位置创建伪console.d.ts
文件:
declare module 'console' {
export = typeof import("console");
}
这将防止自动导入。
积分:https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436