将 Nodejs 与 Typescript 一起使用

Posted

技术标签:

【中文标题】将 Nodejs 与 Typescript 一起使用【英文标题】:Using Nodejs with Typescript 【发布时间】:2012-12-14 12:58:06 【问题描述】:

我想在我的 typescript 项目中使用 Nodejs,并从 https://github.com/borisyankov/DefinitelyTyped/tree/master/node 下载了 node.d.ts

但是 VisualStudio 在 .d.ts 文件中发现了很多错误。它们都基本相同:

错误 2 导出接口“服务器”从私有扩展接口 模块“事件” C:\Users\lhk\Desktop\typescript-game\strategy 去\node\node-0.8.d.ts 236 37 node-0.8.d.ts

所有错误消息都抱怨私有接口被扩展。

我搜索了一下,发现了这个问题: nodejs require inside TypeScript file

其中一个 cmets 建议从 Microsoft 示例中下载 node.d.ts。我浏览了互联网,找到了这篇文章 http://stackful.io/blog/typescript-nodejs-vim-and-linux-oh-my/ 并下载了第二版 node.d.ts ,结果完全相同。

在哪里可以找到适合 nodejs 和 Typescript 的定义文件?

【问题讨论】:

【参考方案1】:

对于 0.8.1-1 版本的 TypeScript,请使用此 github 项目中最新的 node.d.ts 文件: https://github.com/soywiz/typescript-node-definitions

在我从那里提取最新的定义文件之前,我遇到了相同的 exported interface 错误。

【讨论】:

太棒了,这行得通。我比较了两个 .d.ts 文件,发现了一个奇怪的区别。在模块部分,每当导入另一个模块时,旧版本使用“import something=module("something")”,但新版本将其更改为“export import something=module("something")”。如果该模块已导出,为什么扩展私有模块的接口突然变得合法?整个结构对我来说没有意义。例如,为什么模块 http “导出导入”模块事件?我现在可以做类似 http.events.SomethingfromEvents 的事情了吗? github 项目很棒,它解决了我的另一个问题。如果您将此答案复制到***.com/questions/14084406/typescript-and-socket-io,我很乐意接受它 @lhk 我没有详细了解它为什么起作用,我只是很高兴它起作用了。我查看了您的另一个问题,但该问题表明您已经在使用来自 soywiz 项目的 socket.io.d.ts 文件,所以我很困惑为什么您希望我将这个答案复制到那里。 你说得对,我弄混了一些东西。在我发布了这个问题之后,我意识到这个错误也发生在 socket.io.d.ts 文件中。然后我切换到新的 node.d.ts 版本,socket.io.d.ts 中的错误消失了。由于我已经解决了socket.io客户端的问题,这里的错误是socket.io唯一剩下的错误。对不起,我现在将发布我对 socket.io 问题的解决方案【参考方案2】:

我不完全确定这里到底发生了什么。

我怀疑 Typescript 的 (0.8.1~1) node.js 包的当前版本破坏了一些东西。我也遇到过这个。我调整了 node.d.ts 文件并标记了几件事“导出”而不是“声明”,这让我克服了编译问题,但我发现这些函数没有出现在当前范围内。

FWIW,我一直在玩 typescript-require 和 typescript-wrapper 的个人分支(两者都需要一些调整才能与 0.8.1~1 一起使用),我不太确定一切都是工作正常,所以我不确定问题是我的问题还是当前节点/打字稿特有的问题。

【讨论】:

以上是关于将 Nodejs 与 Typescript 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使 SQLite 与 Angular 4+、Electron 和 NodeJS 一起工作

如何使 typescript 与 Promise 一起使用?

将 Typescript 2 @Types 与 typescript 1.8.10 一起使用

将 Typescript 编译为 NodeJs:es6 类型问题

将 typescript 定义文件与 nodejs 混合需要内部模块中的多个文件

如何使 Next.js getStaticProps 与打字稿一起使用