// Modules/MyModule.ts --------------------------------
import fs = require("fs");
module Hello {
export function World(): string {
return "Hello World";
}
}
// Main/App.ts ----------------------------------------
console.log(Hello.World()); // Cannot find name 'Hello'
由于某种原因,这会产生上面指定的错误。奇怪的是,如果我取消注释import语句,我不会再出现此错误。 (无论如何都没用过)
两者都产生相同的错误:
tsc Main/App.ts --module "commonjs"
tsc Main/App.ts --module "amd"
这真的是编译错误还是我错过了什么。我是否需要指定外部模块需要以某种方式不同?
答案 0 :(得分:4)
这个问题出现了很多 - 在TypeScript中,快乐和幸福的关键是选择 内部模块或外部模块,而不是两者。
我已经更广泛地撰写了关于choosing between internal and external modules in TypeScript的文章。底线只选择一个。
在您的情况下,您需要完全提交外部模块。这是一个更新的例子:
// Modules/Hello.ts --------------------------------
import fs = require("fs");
export function World(): string {
return "Hello World"
}
上述文件的模块名称为Hello
,因为它位于名为Hello.ts
的文件中。
然后你可以像这样使用它......
// Main/App.ts ----------------------------------------
import Hello = require("./Modules/Hello");
console.log(Hello.World());
P.S。节点应用程序使用commonjs
模式进行编译 - 但这也适用于AMD。