通过 RequireJS 从 javascript 调用 TypeScript 模块
Calling a TypeScript module from javascript via RequireJS
看起来我在javascript中访问TypeScript模块时必须进行完整命名。这是对的吗?
我的打字稿是:
export module App.editor.menu {
export class File {
static isOpenEnabled() {
return false;
}
static openClicked() {
debugger;
}
}
}
我的JavaScript是:
Ext.onReady(function () {
define(["../../scripts/ribbon", "./menu-handler"], function (ribbon, handler) {
我必须称"处理程序。App.editor.menu.File.isOpenEnabled()" 而不是 "handler.isOpenEnabled()"
我看到的所有示例都不需要包含命名空间。但是我还没有看到任何一半是TypeScript,一半是javascript的例子,所以我认为这可能是不同的。
在这种情况下是否需要完整的命名空间?
命名空间的想法是,您希望避免名称冲突并明确指定特定类型或变量的域。这在 .NET 之类的事情中很重要,其中所有必需类型的传递闭包都加载到一个域中,并且名称冲突将非常成问题。
在外部模块中,这是完全不必要的,因为加载您的代码可以准确定义绑定到的标识符,而调用方只会"看到"他们显式导入的代码。
通常,您不应该有一个 TypeScript 文件,其唯一的顶级元素是 export module
。将所有内容移到外面并放上export
,以便呼叫者可以更轻松地找到它。在您的特定示例中,您的文件应该只显示:
export class File { ... }
而不是在模块中(除非你有一堆其他细分,你真的想通过一个外部模块公开,这不太可能)。
相关文章:
- Typescript模块没有导出的成员-react
- Visual Studio 2015 Update 2-'中的TypeScript模块;要求'未定义
- 可以't在不提供文件扩展名的情况下导入TypeScript模块
- Typescript 0.9.1.1模块被拆分为几个.ts文件
- Typescript模块和systemjs.从内联脚本实例化类
- 通过 RequireJS 从 javascript 调用 TypeScript 模块
- jspm / jQuery / TypeScript - 模块“jquery”没有默认导出
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 用requireJS加载一些typescript模块
- 运行时未定义Typescript模块
- 为什么“;这个“;在具有http promise的typescript模块中未定义
- 使用typescript模块进行Browserify -什么是最佳设计实践?
- 从typescript模块中注册Knockout.js组件视图模型
- Typescript模块放到单个JS文件中
- 需要帮助来理解Angular 2/Typescript模块在Prime NG中的声明
- 如何在NodeJS中公开TypeScript模块
- 无法使用——out将typescript模块(.ts)文件连接到单个输出(.js)中
- Typescript模块工厂模式
- 引用嵌套的TypeScript模块
- Typescript模块,需要外部node_modules