在打字稿中是否有像C#“使用”这样的功能?

时间:2012-11-15 08:18:23

标签: javascript typescript

有没有办法让我更容易在下面的打字稿代码中调用我的警报。这里是我的警报编码的地方:

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

2 个答案:

答案 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