Javascript 在TS文件中导入JS模块
在Visual Studio代码中,当有两个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
.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
}
}