Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,使用requireJS,我如何;要求;typescript对象?_Javascript_Requirejs_Typescript - Fatal编程技术网

在javascript中,使用requireJS,我如何;要求;typescript对象?

在javascript中,使用requireJS,我如何;要求;typescript对象?,javascript,requirejs,typescript,Javascript,Requirejs,Typescript,在我的javascript文件中,我有: require([“菜单/主菜单]),功能(主菜单){ 其中main-menu.ts是从main-menu.javascript/requireJS构建的。javascript/requireJS希望我在main-menu中构建一个define,然后返回。但是typescript不会这样做 我怎样才能做到这一点 更新:例如,以下内容告诉我导出关键字不正确: ///<reference path='../../libs/ExtJS-4.2.0.d.

在我的javascript文件中,我有:

require([“菜单/主菜单]),功能(主菜单){
其中main-menu.ts是从main-menu.javascript/requireJS构建的。javascript/requireJS希望我在main-menu中构建一个define,然后返回。但是typescript不会这样做

我怎样才能做到这一点

更新:例如,以下内容告诉我导出关键字不正确:

///<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 {
    }
}
///
///
导入fdm=需要(“./文件定义”);
需要([“../../scripts/ribbon”],函数(){
导出模块菜单{
导出类主菜单{
}
}

要使用回调执行手动require(例如,对于延迟加载),您可以使用DefiniteTyped:

中的RequireJS类型脚本定义。如果我正确理解您的问题,您希望使用RequireJS访问JavaScript中的
主菜单
,那么您的JavaScript应该如下所示:

require([“路径/目标/主菜单”],函数(主菜单){
main menu.doSomething();
});
现在,假设您使用的是TypeScript
0.9.1
或更高版本,您可以为模块的导出值指定一个值。因此,您可以像这样编写MainMenu.ts文件:

class MainMenu {
    doSomething(): void {
    }
}
export = MainMenu;

编辑:您在
函数
中使用的export语句是不允许的。如果您的代码依赖于包含的功能区脚本,我建议您还需要它和import语句。因此:

import ribbon = require("../../scripts/ribbon");
现在,如果这是一个外部脚本,而您自己没有用TypeScript编写它,则需要告诉编译器此模块存在。在声明文件中添加以下内容:

declare module "../../scripts/ribbon" {};
声明文件是一个扩展名为
*.d.ts
的TypeScript文件。它只包含声明,不包含实现。您可以将其与C头文件进行比较。例如,您可以下载jQuery的声明文件。这将为您提供jQuery的TypeScript编译器支持,而实际上不需要jQuery的TypeScript版本询问

对于
功能区
文件,这里也可以使用相同的原则。如果您还没有声明文件,只需向项目中添加一个声明文件,例如:
declarations.d.ts
。如果您使用Visual Studio作为编辑器,通常TypeScript插件会自动拾取此声明文件。您可以检查如果上面功能区的import语句没有引发错误,则可以正确拾取ile。如果这不起作用,只需在
main菜单中添加引用语句即可。ts

///<reference path='../../libs/declarations.d.ts' />
///

前提是您已在与已引用的其他声明文件相同的库下创建了declarations.d.ts文件。

如何设置手动require?我尝试了require(…),但找不到有效的方法。与您在javascriptI中所做的完全一样,我尝试过,但仍然不起作用(请参阅上面列出了我的特定代码的更新)。还有什么其他的吗?谢谢-daveI尝试了,但仍然不起作用(请参阅列出了我的特定代码的更新)。还有什么其他的吗?谢谢-daveI在“导出模块菜单”中的导出仍然出错。我怎么能避免呢?谢谢-Davey你用的是什么版本的TypeScript?我用的是我认为最新的版本0.9.1.1。我用的是我认为最新的版本0.9.1.1。“导入”是外部模块。一旦你用了它,文件应该被编译成一个外部(即RequireJS或CommonJS)模块。“模块”用于内部模块。我认为您不能从外部模块导出内部模块。此外,您需要使用“export=”RequireJS模块语法,因为TypeScript默认为CommonJS样式的模块。换句话说,类似于:import fdm=require(“./file definitions”);import ribbon=require(../../scripts/ribbon));类MainMenu{…}export=MainMenu;