Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在typescript文件中使用现有的javascript文件?_Node.js_Typescript - Fatal编程技术网

Node.js 如何在typescript文件中使用现有的javascript文件?

Node.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

我在nodejs+express中有一个javascript的现有项目。目前所有的东西都在es5上工作

现在我在同一个项目中添加了typescript,我想用typescript进行所有新的开发。但我在访问现有javascript文件时面临一个问题

我发现我可以为每个现有javascript文件创建定义文件xx.d.ts(不确定它是否正确),然后在typescript文件中使用它

例如,我有一个脚本文件

myFile.js

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文件。在没有其他目标文件夹的情况下,如何管理源代码管理?此答案与问题中发布的问题无关此答案与问题中发布的问题无关