TypeScript 按部分定义 AMD 模块

标签 typescript amd

有没有办法将AMD模块的定义拆分到多个文件中?

举例说明我的意思:

// file WebApp/Deferred.ts
export module WebApp {
    export class Deferred {
        //...
    }
}

// file WebApp/Promise.ts
export module WebApp {
    export class Promise {
        //...
    }
}

// file init.ts
import WebApp = require("WebApp/Deferred", "WebApp/Promise"); // This is incorrect TS synatax
var a = new WebApp.Deferred();

最佳答案

这不是受支持的模式。我建议您在 WebApp 中创建一个 index.ts 文件并从那里导出常见的内容。示例index.ts:

import deferred = require('./Deferred');
import promise = require('./Promise');
export var Deferred = deferred.WebApp.Deferred;
export var Promise = promise.WebApp.Promise;

所以在你的init.ts中:

 import WebApp = require("WebApp/index");
 var a = new WebApp.Deferred();

这是node.js 上的常见模式,人们在文件夹中创建index.js 文件。事实上,node.js 提供了 import 语句的简写,并且 TypeScript 有一个相关的功能请求: https://typescript.codeplex.com/workitem/2125

PS:当您已经使用外部模块(amd/commonjs)时,我建议不要使用内部模块。请参阅:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

关于TypeScript 按部分定义 AMD 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997914/

相关文章:

javascript - requirejs 定义的模块未按预期工作

javascript - 如何调用其他文件中的RequireJS函数?如何分离RequireJS文件?

javascript - typescript 导致语法错误

typescript - 如何使用 typescript 声明特定长度的字符串?

node.js - 如何在 Visual Studio 2015 Community 中使用 tsconfig.json 文件?

javascript - 重命名 webpack AMD 输出中的定义函数

android - Ionic2 - 无法在给定路径的 UI 上显示本地镜像

javascript - ngrx/effects 库的用途是什么?

javascript - 让 requirejs 忽略库

javascript - TypeScript:编译删除未引用的导入