2

有没有一种方法可以更轻松地在下面的打字稿代码中调用我的警报。这是我的警报编码的地方:

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”?

4

2 回答 2

4

肯定有。我不会推荐它,但你正在寻找的是with声明:

module Admin.MyAccount.Access {
    export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {       
        with (Admin.Shared.Alerts) {
            alerts.mvcOnFailure("x");
        }
    }
}

注意:我宁愿使用@Richard 在他对您的问题的评论中提供的解决方案。

于 2012-11-15T08:37:50.720 回答
3

在这方面,我有两个建议给你。首先是你重新考虑你的模块结构。一旦您看到诸如“Common”、“Shared”或“Core”之类的命名空间,它就会告诉您存在问题,因为这些不是描述内部代码可能执行的操作的词。好名字是“消息”、“警报”、“付款”——你可以马上告诉你会在那里找到什么样的东西。

所以建议 1 是删除“共享”命名空间。

module Admin.Alerts {

如果您正在构建大型 TypeScript 程序,您可能需要遵循 CommonJS 应用程序中常用的模块模式。您使用简单的模块名称,但将它们嵌套在文件夹中:

.\Admin\Alerts.ts

module Alerts {

您将使用导入模块

import alerts = module('.\Admin\Alerts.ts');

然后在你的代码中使用它的alerts名字。

在 Web 应用程序中,您将使用模块加载器,例如 requires.js 来为您处理所有加载,因此不会有太多额外的工作,并且您会告诉编译器使用标志为您创建代码。 ..

tsc --module commonjs Alerts.ts
于 2012-11-15T09:11:08.417 回答