我已经开始从事一个大型 typescript 项目。
从一开始,我就想让我的文件井井有条(这个项目将由许多开发人员拆分,因此秩序非常必要)。
我一直在尝试使用模块/命名空间,并将每个类拆分为单独的文件,并使用一个文件夹保存命名空间。
文件结构为:
app.ts
\Classes
---- \Animals
---- ---- Mammals.ts
---- ---- Reptiles.ts
然后我尝试导入 app.ts 中该命名空间中的所有文件,方法如下:import * as Animals from "./Classes/Animals"
至于命名空间文件本身,我尝试了以下方法,但没有成功:
namespace Animals {
export class Mammals {
constructor() {
}
}
}
还有:
module Animals {
export class Reptiles {
constructor() {
}
}
}
不幸的是,该路径永远无法识别(因为它指向一个文件夹而不是单个文件)。这可能吗?将我的所有类都来自一个文件中的单个命名空间将导致文件长达数千行,并且对于该项目而言是不可维护的。
我还注意到 TypeScript 1.5 支持 tsconfig.json - 但是,必须手动将每个文件添加到 map 是开发人员开始添加类时引入问题的必经之路。
注意:我使用的是 Visual Studio 2015、TypeScript 1.5(我相信,不确定如何验证)。我还打开了 ES6 支持。
最佳答案
使用重新导出来创建一个外部模块,该模块对来自其他模块的类型进行分组和公开:
// Classes/Animals.ts
export * from '.\Animals\Mammals';
export * from '.\Animals\Reptiles';
然后像往常一样从新模块导入类型:
// app.ts
import * as Animals from '.\Classes\Animals'
let dog: Animals.Dog;
let snake: Animals.Snake;
或者
// app.ts
import { Dog, Snake } from '.\Classes\Animals'
let dog: Dog;
let snake: Snake;
关于javascript - 在 TypeScript 中使用分布在多个模块文件中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983209/