Node.js 将typescript定义文件与NodeJ混合需要在一个内部模块中包含多个文件

Node.js 将typescript定义文件与NodeJ混合需要在一个内部模块中包含多个文件,node.js,knockout.js,typescript,npm,definitelytyped,Node.js,Knockout.js,Typescript,Npm,Definitelytyped,将nodejs模块(require)与typescript定义文件(d.t)多次混合在一个模块内的文件上是否存在任何已知问题 我的场景是,每个文件夹都有一个模块名称空间(很像在C#中),然后基本上通过tsc将它们编译成一个输出的My module.js。然而,我经常遇到一些非常奇怪的错误,比如找不到类型HTMLElement,但是很多人都指出,tsc默认包括包含所有这些类型的typescript lib文件 我注意到一些人在多个文件中包含相同的d.ts文件时出现了奇怪的错误,这些文件都是使用--

将nodejs模块(require)与typescript定义文件(d.t)多次混合在一个模块内的文件上是否存在任何已知问题

我的场景是,每个文件夹都有一个模块名称空间(很像在C#中),然后基本上通过tsc将它们编译成一个输出的
My module.js
。然而,我经常遇到一些非常奇怪的错误,比如
找不到类型HTMLElement
,但是很多人都指出,tsc默认包括包含所有这些类型的typescript lib文件

我注意到一些人在多个文件中包含相同的d.ts文件时出现了奇怪的错误,这些文件都是使用
--out
标志编译的,以便将所有文件都放在一个文件中,所以这会导致我的问题吗

我的用法示例如下:

///<reference path="path/to/knockout.d.ts" />
import ko = require("knockout");
///
进口ko=要求(“淘汰”);

然后,这将被放入每个需要knockout js的文件中,在我当前试图编译的模块中,至少有10个文件需要knockout js。它只是不断地说knockout.d.ts找不到类型HTMLElemet、Element、Document等。

如果您使用外部模块(如果您有顶级“导入”-如上所示),那么您就不能使用--out开关组合多个源文件。对于外部模块,一个源文件=一个模块是一个限制。对于不在外部模块中的源(即,贡献给“全局”作用域),可以使用--out将输入源组合到一个输出JavaScript文件


我不知道“找不到HTMLElement”问题。如果您可以提供一个复制(并概述您正在使用的版本),我可以看一看。

我没有这个问题,但可能我的文件数低于显示问题所需的阈值。我把这些参考资料重复了几次——但可能没有你那么多。Ryan Cavanaugh可能是回答这个问题的最佳人选。这可能是一个转移视线的问题,但是要编译的文件没有记录错误,只是
knockout.d.ts
上有错误,但是我不确定如何最好地解决这个问题……导入ko=require(“knockout”)是我试图通过npm要求一个非类型脚本模块。(
npm安装淘汰版
)。我在参考中包含了上述ko的定义文件。这是一个更复杂的用例,但我相信它应该是合法的。上面的导入等可能没有什么问题,但编译器只是抱怨它无法在knockout.d.ts中找到类型,这让我难以置信。