使用导入时,TypeScript不会解析模块

时间:2015-05-25 14:16:09

标签: node.js typescript amd commonjs typescript1.4

// 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"

这真的是编译错误还是我错过了什么。我是否需要指定外部模块需要以某种方式不同?

1 个答案:

答案 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。