【发布时间】:2018-09-22 20:10:28
【问题描述】:
在 TypeScript 文档中,namespaces 被称为内部 TypeScript 模块,为了在单个文件中使用它们作为引用,我们必须在命名空间中添加一个 ref 标头,例如:/// <reference path="Validation.ts" />,如文档中所述。但是,我们也可以使用 export declare namespace MyNameSpace 导出和声明命名空间,然后将其导入任何其他实体。是否有任何理由建议我们使用 header ref 标签而不是命名空间声明的导出。
在听到关于编译和运行时顺序的第一个答案后,我想也许最好提供一个示例,这是一个简单的问候应用程序,其中包含三个带有声明命名空间 的 mains 文件(我怀疑我们甚至需要当我们想在我们的应用程序范围内使用它时导入)
文件名: GreetingApp.ts
export declare namespace GreetingApp {}
文件名: Hello.ts
namespace GreetingApp {
export class Hello {
constructor(private name: string) {
this.name = name.toLowerCase().charAt(0).toUpperCase() + name.substr(1).toLowerCase();
}
public toString(): string {
return "Hello! " + this.name;
}
}
}
文件名: Bye.ts
namespace GreetingApp {
export class Bye {
constructor(private name: string) {
this.name = name.toLowerCase().charAt(0).toUpperCase() + name.substr(1).toLowerCase();
}
public toString(): string {
return "Goodbye! " + this.name;
}
}
}
文件名: UseCase.ts (用于导入和实例化对象的测试文件)
import GreetingApp from './GreetingApp';
console.log(new GreetingApp.Hello('adam').toString());
console.log(new GreetingApp.Bye('adam').toString());
【问题讨论】:
-
为确保我理解正确,请您标记代码块的哪一部分对应于每个文件?
-
确定我更新了问题并为每个文件分离了源代码
标签: typescript