Node.js 如何在typescript文件中使用现有的javascript文件?
我在nodejs+express中有一个javascript的现有项目。目前所有的东西都在es5上工作 现在我在同一个项目中添加了typescript,我想用typescript进行所有新的开发。但我在访问现有javascript文件时面临一个问题 我发现我可以为每个现有javascript文件创建定义文件xx.d.ts(不确定它是否正确),然后在typescript文件中使用它 例如,我有一个脚本文件 myFile.jsNode.js 如何在typescript文件中使用现有的javascript文件?,node.js,typescript,Node.js,Typescript,我在nodejs+express中有一个javascript的现有项目。目前所有的东西都在es5上工作 现在我在同一个项目中添加了typescript,我想用typescript进行所有新的开发。但我在访问现有javascript文件时面临一个问题 我发现我可以为每个现有javascript文件创建定义文件xx.d.ts(不确定它是否正确),然后在typescript文件中使用它 例如,我有一个脚本文件 myFile.js function myClass(){ //some functions
function myClass(){
//some functions here associated with this variable
}
exports.myData = new myClass();
现在我想在我的新ts文件中使用它
所以我在ts文件中访问的是
declare function require(path: string): any;
var auth = require('./myFile').myData;
我不确定这是否是正确的方法。其次,我也尝试了myFile.d.ts文件
我用以下方式定义了这个文件
declare module './myFile' {
export var myData: any
}
但这给出了相对路径的误差-
TS2436环境模块声明无法指定相对模块路径
请告诉我是否有人有任何解决此问题的想法,或者建议是否可以使用第一种方法。我很久以前就找到了解决方案,但没有在这里发布。让我在这里添加答案,这样它可以帮助每个人 在tsconfig.json中进行更改。这里最重要的部分是类型和类型根属性
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"declaration": true,
"moduleResolution": "node",
"types": ["node"],
"typeRoots": ["node_modules/@types"],
"lib": [ "es2015","dom" ]
}
}
现在转到package.json并根据需要添加一些类型定义包
"@types/node": "~8.0.54",
在这个配置之后,没有人会出错,我们不需要在每个文件中单独指定声明我很久以前就找到了解决方案,但没有在这里发布。让我在这里添加答案,这样它可以帮助每个人 在tsconfig.json中进行更改。这里最重要的部分是类型和类型根属性
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"declaration": true,
"moduleResolution": "node",
"types": ["node"],
"typeRoots": ["node_modules/@types"],
"lib": [ "es2015","dom" ]
}
}
现在转到package.json并根据需要添加一些类型定义包
"@types/node": "~8.0.54",
在此配置之后,没有人会出现错误,我们不需要在每个文件中单独指定声明您是否尝试了tsconfig.json中的
allowJS
选项?是生成声明文件的好工具。@unional谢谢你的建议,我试过了。但在替换现有文件时会出现不同的错误。---错误TS5055:无法写入文件“xx.js”,因为它将覆盖输入文件。对于这个问题有一个解决方案,就是使用不同的目标文件夹,但我不想要它。@SiamandMaroufi我尝试过使用它,但它会生成最差的xx.d.ts文件。它只需使用导出字编写一行代码。like-export'path/xx.js“'此npm包基本上用于生成包含ts文件的npm包的定义文件。它不适用于js文件。如果没有其他目标文件夹,如何管理源代码管理?您是否尝试过tsconfig.json中的allowJS
选项?是生成声明文件的好工具。@unional谢谢你的建议,我试过了。但在替换现有文件时会出现不同的错误。---错误TS5055:无法写入文件“xx.js”,因为它将覆盖输入文件。对于这个问题有一个解决方案,就是使用不同的目标文件夹,但我不想要它。@SiamandMaroufi我尝试过使用它,但它会生成最差的xx.d.ts文件。它只需使用导出字编写一行代码。like-export'path/xx.js“'此npm包基本上用于生成包含ts文件的npm包的定义文件。它不适用于js文件。在没有其他目标文件夹的情况下,如何管理源代码管理?此答案与问题中发布的问题无关此答案与问题中发布的问题无关