Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有像C“这样的功能;使用;打字稿?_Javascript_Typescript - Fatal编程技术网

Javascript 有没有像C“这样的功能;使用;打字稿?

Javascript 有没有像C“这样的功能;使用;打字稿?,javascript,typescript,Javascript,Typescript,有没有一种方法可以让我更容易在下面的typescript代码中调用我的警报。以下是我的警报代码: module Admin.Shared.Alerts { export class alerts { static mvcOnFailure(message: string) { dialog.alertWin("Internal Application Error", message); } } } 下面是一个我称之为的小

有没有一种方法可以让我更容易在下面的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”

当然有。我不推荐它,但您需要的是
with
语句:

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

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

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

因此,建议1是删除“共享”名称空间

module Admin.Alerts {
如果您正在构建一个大型的TypeScript程序,您可能希望遵循CommonJS应用程序中常用的模块模式。您使用简单的模块名称,但将其嵌套在文件夹中:

.\Admin\Alerts.ts

您可以使用

import alerts = module('.\Admin\Alerts.ts');
然后在
警报
名称下的代码中使用它

在web应用程序中,您将使用模块加载器(如requires.js)为您处理所有加载,这样就不会有太多额外的工作,并且您将告诉编译器使用标志为您创建代码

tsc --module commonjs Alerts.ts

当然:
var-Alerts=Admin.Shared.Alerts
在旁注中-我在三月份更详细地写到了这里的“常见”命名空间问题:当浏览器已经能够加载JavaScript时,为什么要使用模块加载器?模块加载器只是一个选项。捆绑在浏览器中更为常见——先进行一次大的点击,然后进行缓存。模块加载器允许您在缓存单个脚本的情况下进行较小的点击,而不会影响页面加载。
tsc --module commonjs Alerts.ts