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

TypeScript won't resolve module when import is used

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

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

这个经常出现 - 在 TypeScript 中获得快乐和幸福的关键是选择 内部模块 外部模块而不是两者。

关于 choosing between internal and external modules in TypeScript 我写了更广泛的文章。底线是仅选择 one.

在您的情况下,您需要完全致力于外部模块。这是一个更新的例子:

// 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。 Node 应用程序使用 commonjs 模式编译 - 但这也适用于 AMD。