Javascript 在TS文件中导入JS模块

Javascript 在TS文件中导入JS模块,javascript,typescript,node-modules,Javascript,Typescript,Node Modules,在Visual Studio代码中,当有两个.js模块文件A.js和B.js时,在模块B中导入模块A允许我们在导入的模块上使用autocomplete。将模块A导入C.ts时,此自动完成功能不可用,当然会出现消息找不到模块的声明文件。我看到的答案建议为模块A创建声明文件,但我想避免这种情况,因为VS代码已经“知道”了声明,因为它在将JS模块导入另一个JS模块时正在工作。环境是nodejs 例如: // A.js export const some_variable = 1 // B.js im

在Visual Studio代码中,当有两个.js模块文件A.js和B.js时,在模块B中导入模块A允许我们在导入的模块上使用autocomplete。将模块A导入
C.ts
时,此自动完成功能不可用,当然会出现消息
找不到模块的声明文件。我看到的答案建议为模块A创建声明文件,但我想避免这种情况,因为VS代码已经“知道”了声明,因为它在将JS模块导入另一个JS模块时正在工作。环境是nodejs

例如:

// A.js
export const some_variable = 1

// B.js
import * as A from 'A.js'
A.some_variable --> autosugestion and complete works

// C.ts
import * as A from 'A.js' --> this shows warning and autocomplete not available on A.
A.some_variable --> does not throw error but autocomplete is not working
是否有一种方法允许在不使用声明文件的情况下将JS模块导入TS文件,以便自动完成和键入工作

编辑:(tsconfig.json)


您不能这样做。您需要为此添加键入,以便在TypeScript中导入js模块。请阅读以下内容:

您的tsconfig.json是什么样的?你设置了标志“allowJs”了吗?我刚刚添加了tsconfig.json。我尝试添加allowJS,但问题仍然存在。代码运行得很好,编译过程中没有错误。我读过它,并且知道声明文件是如何工作的,当将.js模块导入另一个.js模块时,我觉得很奇怪,声明在没有声明文件的情况下是已知的,但是将.js模块导入.ts文件会禁用VS代码中的自动完成和IntelliSense。这是因为您的tsconfig文件,您应该更新它,然后它也会导入js文件。您指的是tsconfig中的{allowjs:true}。{“编译器选项”:{“目标”:“es5”,“module”:“es6”}}试试这个。
{
  "compilerOptions": {
    "baseUrl": ".",
    "esModuleInterop": true,
    "lib": ["es2015"],
    "module": "commonjs",
    "noImplicitAny": false,
    "outDir": ".build",
    "paths": {
      "*": ["node_modules/*"]
    },
    "preserveConstEnums": true,
    "resolveJsonModule": true,
    "rootDir": "",
    "sourceMap": true,
    "strictNullChecks": true,
    "target": "es6",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noImplicitUseStrict": true,
    "checkJs": true,
    "allowSyntheticDefaultImports": true,
    "declaration": true,
    "allowJs": true
  }
}