在javascript中,使用requireJS,我如何"要求“;typescript对象
In javascript, using requireJS, how do I "require" a typescript object?
在我的javascript文件中,我有:
require(["menu/main-menu"], function (mainMenu) {
其中主菜单是从main-menu.ts构建的。javascript/requireJS希望我在主菜单中构建一个define I return。但打字并不能做到这一点。
我怎样才能做到这一点?
更新:例如,以下命令告诉我导出关键字不正确:
///<reference path='../../libs/ExtJS-4.2.0.d.ts' />
///<reference path='../../libs/require.d.ts' />
import fdm = require("./file-definitions");
require(["../../scripts/ribbon"], function () {
export module Menu {
export class MainMenu {
}
}
如果我正确理解你的问题,你想使用RequireJS访问JavaScript中的MainMenu
吗?然后你的JavaScript应该看起来像:
require(["path/to/MainMenu"],function(mainMenu){
mainMenu.doSomething();
});
现在,假设您使用的是TypeScript 0.9.1
或更高版本,您可以为模块的导出值分配一个值。所以你可以这样写你的MainMenu.ts文件:
class MainMenu {
doSomething(): void {
}
}
export = MainMenu;
编辑:您正在function
内部使用导出语句,这是不允许的。如果您的代码依赖于包含的功能区脚本,我建议您也需要将其与导入语句一起使用。因此:
import ribbon = require("../../scripts/ribbon");
现在,如果这是一个外部脚本,而您自己还没有用TypeScript编写它,则需要告诉编译器该模块存在。在您的申报文件中添加以下内容:
declare module "../../scripts/ribbon" {};
声明文件是一个扩展名为*.d.ts
的TypeScript文件。它只包含声明,不包含实现。您可以将其与C头文件进行比较。例如,您可以为jQuery下载一个声明文件。这将为您提供对jQuery的TypeScript编译器支持,而无需实际使用TypeScript版本的jQuery。
对于ribbon
文件,这里可以使用相同的原理。如果您还没有声明文件,只需在项目中添加一个即可,例如:declarations.d.ts
。如果您使用Visual Studio作为编辑器,通常TypeScript插件应该自动获取此声明文件。您可以检查文件是否正确拾取,以防上面功能区的导入语句没有引发错误。如果这不起作用,只需在MainMenu.ts
:中添加一个引用语句
///<reference path='../../libs/declarations.d.ts' />
假设您已在与已引用的其他声明文件相同的库下创建了declarations.d.ts文件。
要通过回调进行手动需求(例如,对于延迟加载),您可以使用DefinelyTyped中TypeScript的RequireJS定义:https://github.com/borisyankov/DefinitelyTyped/tree/master/requirejs
- "“;变量未引用正确的对象
- 如何创建js常量对象与"依赖/相对;价值观
- "属性描述必须是对象“”;错误
- 获取"下一个“;对象中的数值
- 得到"TypeError:对象不是函数“”;在forEach循环中使用超级测试/超级代理时
- "键“;jQuery中的对象无法正常工作
- 为什么下面抛出一个“;对象没有't支持属性或方法'importNode'"在IE11中
- "未捕获[对象对象]”;投掷和接球时
- "对象不是函数“;当将Node.js HTTP服务器对象传递给Socket.IO时
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- 得到"未捕获的类型错误:未定义的不是函数“;当试图从对象调用get()或set()时
- 获得错误“;对象没有方法'jScrollPane'"与AngularJS一起使用时
- "类型错误:'null'不是对象(正在评估“a.nodeType')”;在phanto
- "这个“;对象函数内部的引用
- "对象没有't支持这种性质或方法“;在IE 8中.在调试中执行精细
- "Function.createDelegate"原因;错误:对象没有't支持属性或方法
- 在javascript中,使用requireJS,我如何"要求“;typescript对象
- a href="上的javascript对象对象;javascript:"呼叫
- TypeError:undefined不是一个对象(正在评估'msg.innerHTML="Uploa
- 获取对象"值“;在数组中