在我的javascript文件中,我有:
require(["menu/main-menu"], function (mainMenu) {
主菜单是从main-menu.ts构建的。 javascript / requireJS希望我在主菜单中建立一个我返回的定义。但是打字稿并没有做到AFAIK。
我该如何做到这一点?
更新:例如,以下内容告诉我export关键字不正确:
///<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 {
}
}
答案 0 :(得分:1)
如果我正确理解您的问题,您想使用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语句。所以:
import ribbon = require("../../scripts/ribbon");
现在,如果这是一个外部脚本而你自己没有用TypeScript编写它,你需要告诉编译器这个模块是否存在。在您的声明文件中添加以下内容:
declare module "../../scripts/ribbon" {};
声明文件是扩展名为*.d.ts
的TypeScript文件。它只包含声明,而不包含实现。您可以将它与C头文件进行比较。例如,您可以下载jQuery的声明文件。这将为您提供TypeScript编译器对jQuery的支持,而无需实际需要TypeScript版本的jQuery。
此处可以使用与ribbon
文件相同的原则。如果您还没有声明文件,只需在项目中添加一个,例如:declarations.d.ts
。如果您使用Visual Studio作为编辑器,通常TypeScript插件应自动获取此声明文件。如果上面的功能区的import语句没有引发错误,您可以检查文件是否被正确选取。如果这不起作用,只需在MainMenu.ts
中添加引用声明:
///<reference path='../../libs/declarations.d.ts' />
如果您在与您已引用的其他声明文件相同的lib下创建了declarations.d.ts文件。
答案 1 :(得分:0)
要使用回调执行手动要求(例如延迟加载),您可以使用DefinitelyTyped的TypeScript的RequireJS定义:https://github.com/borisyankov/DefinitelyTyped/tree/master/requirejs