TypeScript模块命名空间,同时保留编译后的多个文件

我想利用TypeScript的名称空间/模块function,同时保留多文件输出(每个.ts文件被编译为单独的.js文件)。

我期望的组织和语法与本质量保证几乎相同: 在多个文件中的TypeScript模块命名空间 。

然而,我没有将TS编译成一个文件,而是寻找一种方法来保存原始文件结构,并让编译器注入必要的require()语句,使其在Node中工作。

例如

app.ts

 /// <reference path="./model/animal.ts" /> var myAnimal = new MyNamespace.Model.Animal(); 

会编译成

app.js

 var MyNamespace = { Model: { Animal: require('./model/animal') } }; var myAnimal = new MyNamespace.Model.Animal() 

或类似的

什么史蒂夫说。 使用外部模块。 只是修正语法:

 import AnimalModel = require("./model/animal"); var myAnimal = new AnimalModel.Animal(); 

var/require组合基本相同,不同的是使用import来告诉打字稿寻找.ts文件并进行types推断。

还要为Node编译使用--module commonjs模块标志。

 tsc --module commonjs app.ts 

更多: https : //www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

为了充分利用外部模块(专为此目的而构build),请使用以下内容:

 import AnimalModel = "./model/animal.ts"; var myAnimal = new AnimalModel .Animal(); 

您不需要在animal.ts文件中使用module关键字。

您还需要传递相应的编译器模块模式 – 对于您传递的AMD(RequireJS)–module --module amd

 tsc --module amd app.ts