【问题标题】:How to create a TypeScript Nodejs module spanning multiple files如何创建跨越多个文件的 TypeScript Nodejs 模块
【发布时间】:2013-09-25 10:19:43
【问题描述】:

我正在尝试使用 TypeScript 创建具有单个命名空间的 Node.js 模块。我需要模块的类位于单独的文件中,并且相互引用。我还需要这个模块来利用其他节点模块。但如果我理解正确的话,TypeScript 仅在命名空间包含在单个文件中或命名空间不使用外部模块时才支持命名空间。

有些人提出使用后期构建工具来使最终模块工作,这很好,但并没有解决 TypeScript 在开发过程中结合跨文件命名空间和导入时抛出的所有错误。

是否最接近的解决方案是为每个文件创建一个模块,并创建一个相互导入的网络?

【问题讨论】:

标签: node.js typescript


【解决方案1】:

我发现最适合我的模块依赖项是始终使用源引用,例如:

/// <reference path="other.ts" />

如果您使用语言级导入/模块,则无法从 tsc 生成单文件输出,因此我使用require 作为函数等等。

这似乎是same solution chosen by the TypeScript developers themselves(在那里搜索“require(”)。正如silentorb 的评论所建议的,您可以将require 函数声明为以下的一些变体(或使用DefinitelyTyped):

declare function require(name: string): any;

请注意,TS 论坛 (one recent example) 上经常有很多关于 TS 中整个模块化主题的讨论。

【讨论】:

  • 我自己不会理解您的解释,但指向的第一个链接演示了解决方案。避免 import foo = require('foo') 使用 declare var require: any; 覆盖要求
  • 您能否编辑您的答案以提及我在评论中的代码?我已经看到这个问题在没有任何人提供该代码的情况下讨论了几个地方。我看到的最接近的是他们覆盖 require 的一个示例,但我不明白为什么,因为他们的代码没有使用它。
  • 我放入了我之前使用过的require 声明,虽然你的更通用,而DefinitelyTyped 中的更详细。
  • 作为更新,我建议这些天在 TypeScript 中使用 ES6 模块。
猜你喜欢
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 2014-04-04
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多