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

时间:2014-07-30 18:41:20

标签: node.js typescript

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

我所需的组织和语法与此质量检查几乎相同:TypeScript module namespacing in multiple files

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

e.g。

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()

或类似的

2 个答案:

答案 0 :(得分:2)

史蒂夫说。使用外部模块。只需修复语法:

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

基本上与var/require combo相同,除了您使用import告诉typescript寻找.ts文件并进行类型推断。

同样为Node编译使用--module commonjs模块标志。

tsc --module commonjs app.ts

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

答案 1 :(得分:0)

要利用外部模块(为此目的而构建),请使用以下命令:

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

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

您还需要传递适当的编译器模块模式 - 对于AMD(RequireJS),您传递--module amd ...

tsc --module amd app.ts