【发布时间】:2017-03-17 20:11:51
【问题描述】:
带有 export as namespace 声明的库或类型似乎会自动污染我的代码的命名空间,尽管我从未导入它们。
例如:
import * as bar from "exa";
export var t2 = (a:foo.Test) => {
console.log(a.doSomething());
}
export class Something {
public test(c:foo.Test) {
c.doSomething();
}
}
当我尝试引用“foo”时,我期望会发生错误,因为我没有明确导入它或在任何地方定义它。但是,这编译成功。
根据TypeScript 2.0 Handbook,使用 export as namespace 声明导出的命名空间只有在您编写脚本时才可用,他们将其定义为 “没有导入的文件或出口”。但是在上面的示例中,我有一个导入和两个导出,所以我认为它不算是脚本?
因此,为什么我可以从我的代码中引用“foo”?
这是使用 TypeScript 2.2 编译的
【问题讨论】: