我想利用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()
或类似的
答案 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
答案 1 :(得分:0)
要利用外部模块(为此目的而构建),请使用以下命令:
import AnimalModel = "./model/animal.ts";
var myAnimal = new AnimalModel .Animal();
您无需在module
文件中使用animal.ts
关键字。
您还需要传递适当的编译器模块模式 - 对于AMD(RequireJS),您传递--module amd
...
tsc --module amd app.ts