在我的应用程序中,我将类拆分为文件:
例如,一个类看起来像:
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
之后加载,这导致确定所描述的错误。
如何设置要加载的文件的顺序?
答案 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