我在尝试在TypeScript项目中导入类型时遇到问题。我不完全确定进口是如何运作的......
文件 foo.ts
module Foo {
export class Bar {
}
}
文件 bar.ts
import { Bar } from "Foo";
无法找到模块'Foo'。
import { Bar } from "../scripts/Foo";
文件'/scripts/foo.ts'不是模块。
那么,我在这里误解了什么?另外,我应该使用module
还是namespace
,有什么区别?
注意 foo.ts
和bar.ts
位于同一位置...我可以省略../scripts/
吗?
答案 0 :(得分:1)
您缺少的是TypeScript支持两种类型的模块 - external和internal。内部模块在较新版本中重命名为命名空间(这是因为有较早的module
和较新的namespace
关键字的原因 - 您可以在项目中使用它们/它们是相同的)。
在 bar.ts 中使用import
语法时,您正尝试使用外部模块。
但是在将export
添加到根范围之前, foo.ts 不是外部模块。
我建议留在import
并使用这样的外部模块:
<强> Foo.ts 强>
export class Bar {
}
<强> Bar.ts 强>
import { Bar } from "./Foo"; // path needs to be relative here
// if referencing files are in same folder use ./ to force the path to be relative
在您希望将类包装到名称空间之前,无需使用module
/ namespace
。
答案 1 :(得分:0)
您应该阅读一些文档。一个快速的谷歌给了我this, which explains the different between namespace and module.看看它,并尝试更好地了解你需要什么,因为我不能完全告诉你的帖子,因为模块的语法似乎是{{1}根据我在那里看到的东西,似乎命名空间可能就是你想要的。我不完全确定,但我觉得你的答案就在那个页面上。