我可以在 Nodejs 项目中同时使用 ES5 和 Typescript 吗?
Posted
技术标签:
【中文标题】我可以在 Nodejs 项目中同时使用 ES5 和 Typescript 吗?【英文标题】:Can i use ES5 and Typescript at the same time in Nodejs project? 【发布时间】:2019-04-27 05:42:52 【问题描述】:我用 es5 表示法开发 express 应用程序,现在我需要使用接口。当我搜索它时得知 ES5 中没有接口结构,我决定用 Typescript 编写这部分。但是我不能 require() 这个 ts 文件在另一个用 ES5 符号编写的文件中。我偶尔会搜索这个问题,但我找不到任何谈论这个问题的来源。很可能我走错了路,但我不知道如何做到这一点。有没有办法同时运行 typescript 和 es5。如何实现这个问题?
感谢您的帮助!
更新
仅使用 typescript 编写的模块文件夹。
我的文件结构的一部分在这里:
/managers
/modules
/routes
app.js
package.json
tsconfig.json
这里是 tsconfig.json 文件内容:
"compileOnSave": false,
"compilerOptions":
"baseUrl": "./modules",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"target": "es5",
"module": "commonjs",
"allowJs": true
package.json 文件是
"scripts":
"start": "nodemon --legacy-watch ./bin/www"
,
"dependencies":
"async": "^2.6.1",
"concurrently": "^4.1.0",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"http-errors": "~1.6.2",
"jade": "~1.11.0",
"jsonwebtoken": "^8.3.0",
"mongoose": "^5.2.12",
"morgan": "~1.9.0",
"nodemon": "^1.18.4",
"typescript": "^1.8.10",
【问题讨论】:
“现在我需要使用接口” 为什么?如果您还没有使用 TypeScript,那么接口的整个概念(作为代码构造而不是约定+文档)是不相关的。但是,是的,您当然可以在同一个项目中使用 javascript 和 TypeScript。当然,你不能在 JavaScript 代码中使用特定于 TypeScript 的东西(如接口)。 感谢您的快速回复@T.J.Crowder。实际上我尝试在项目中应用一些模式(这就是我尝试使用接口的原因),我想做的是在 typescript 类中调用一种方法。 【参考方案1】:您的问题很笼统,缺乏具体的例子。但是,完全可以在同一个项目中混合使用 ES 和 TS。也就是说,您需要了解如何构建代码。
如果没有看到您的项目结构和构建管道,就不可能说出如何解决您的问题,但我建议您通过tsc
运行所有代码,并在tsconfig.json
中使用"allowJs": true
。
【讨论】:
很遗憾,我仍然无法理解您的应用程序是如何运行的。您的 npm 'start' 脚本调用nodemon
并监视您未显示其内容的文件夹。此外,还不清楚您何时调用tsc
来转译您的源代码。更令人困惑的是,您的 tsconfig.json
建议您构建的 js 文件输出到完全不相关的地方(dist/out-tsc
)。
bin 文件夹包括 www 文件,其中包含应用程序配置。它在根上。我的困惑是 nodemon run ./bin/www 文件夹以及如何实现 tsc 来运行另一个目录。我的最后一个问题是 tsconfig 应该是这样的 "outDir": "./" 还是 "outDir": "./bin/www" ,以上是关于我可以在 Nodejs 项目中同时使用 ES5 和 Typescript 吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在一个应用程序中使用 symfony nodeJS 和 angular [关闭]