有没有办法让我更容易在下面的打字稿代码中调用我的警报。这里是我的警报编码的地方:
module Admin.Shared.Alerts {
export class alerts {
static mvcOnFailure(message: string) {
dialog.alertWin("Internal Application Error", message);
}
}
}
以下是我称之为的小片段示例:
module Admin.MyAccount.Access {
export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {
Admin.Shared.Alerts.alerts.mvcOnFailure("x");
}
}
问题是有一个很长的字符串来调用警报。有没有办法可以做一些像"使用"在C#中,我不必指定" Admin.Shared.Alerts" ?
答案 0 :(得分:4)
with
声明:
module Admin.MyAccount.Access {
export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {
with (Admin.Shared.Alerts) {
alerts.mvcOnFailure("x");
}
}
}
注意:我宁愿使用@Richard在你的问题评论中提供的解决方案。
答案 1 :(得分:3)
在这方面,我有两条建议。首先,您要重新考虑模块结构。只要您看到“Common”,“Shared”或“Core”等命名空间,它就会告诉您存在问题,因为这些不是描述内部代码可能执行的操作的单词。好名字是“消息”,“警报”,“付款” - 你可以直接告诉你那里会找到什么样的东西。
因此,建议1是删除“共享”命名空间。
module Admin.Alerts {
如果要构建大型TypeScript程序,则可能需要遵循CommonJS应用程序中常用的模块模式。您使用简单的模块名称,但将它们嵌套在文件夹中:
\管理员\ Alerts.ts
module Alerts {
您可以使用
导入模块import alerts = module('.\Admin\Alerts.ts');
然后在alerts
名称下的代码中使用它。
在Web应用程序中,您将使用模块加载器(例如requires.js)来处理所有加载,因此它不需要额外的工作,您可以告诉编译器为您创建代码一面旗帜......
tsc --module commonjs Alerts.ts