强制所需TypeScript文件的顺序

时间:2015-10-12 12:42:19

标签: typescript

在我的应用程序中,我将类拆分为文件:

例如,一个类看起来像:

module App.Classes.Bootgrid {
    import DefaultJQueryAjaxSettings = App.Classes.JQuery.DefaultJQueryAjaxSettings;

    export class DefaultBootgridOptions implements IBootgridOptions {
        ajax = true;
        columnSelection= false;
        ajaxSettings=  new DefaultJQueryAjaxSettings();
    }
}

而DefaultJQueryAjaxSettings.ts看起来像

module App.Classes.JQuery {
    export class DefaultJQueryAjaxSettings implements JQueryAjaxSettings {
        async =false;
        contentType = "application/x-www-form-urlencoded; charset=UTF-8";
        method = "GET";
        statusCode: { [index: string]: any; };
        type = "GET";
    }
} 

在运行时我总是得到错误:

  

未捕获的TypeError:无法读取属性' DefaultJQueryAjaxSettings'未定义的

从App.Classes.JQuery开始执行时为undefined。查看Chromes Developer工具中的Network标签,它向我显示DefaultJQueryAjaxSettings.js文件在<{strong> DefaultBootgridOptions.js之后加载,这导致确定所描述的错误。 如何设置要加载的文件的顺序?

3 个答案:

答案 0 :(得分:0)

这里的问题是,因为jQuery 1.8是AJAX调用使用的jQuery $ .param()序列化的默认值是传统的=== false

答案 1 :(得分:0)

文件的顺序由以下特殊注释控制。您应该将以下行添加到您问题的第一个示例代码中:

///<reference path="path/to/DefaultJQueryAjaxSettings.ts" />

这就是内部模块的工作方式。 TypeScript中还有外部模块。有关差异,请参阅http://typescriptlang.org

答案 2 :(得分:0)

  

如何设置要加载的文件的顺序?

使用基于文件的模块(也称为外部模块)请参阅差异:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

这些错误正是我推荐out / internal modules的原因:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md