javascript - 在 typescript 中有没有类似 C# 的 "using" 的功能?
有没有办法让我在下面的 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# 中的“using”那样,不必指定“Admin.Shared.Alerts”?
答案#1
确实有。我不推荐这样做,但你要找的是 with 语句:
module Admin.MyAccount.Access {
export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {
with (Admin.Shared.Alerts) {
alerts.mvcOnFailure("x");
}
}
}
注意: 我更愿意使用 @Richard 在你问题的评论中提供的解决方案。
答案#2
在这方面,我有两个建议给你。第一个是你应该重新考虑你的模块结构。一旦你看到像“Common”“Shared”或“Core”这样的命名空间,就说明存在问题,因为这些词无法描述其中的代码可能做什么。好的名称应该是“Messaging”“Alerts”“Payments”,你可以立即知道里面包含的内容类型。
所以推荐的第一点是移除“Shared”命名空间。
module Admin.Alerts {
如果你正在构建一个大型 TypeScript 程序,你可能希望遵循在 CommonJS 应用程序中常用的模块模式。你可以使用简单的模块名称,但将它们嵌套在文件夹中:
.\Admin\Alerts.ts
module Alerts {
你会使用以下方式导入模块
import alerts = module('.\Admin\Alerts.ts');
然后在你的代码中以 alerts 的名称使用它。
在一个网页应用中,你会使用模块加载器,比如 require.js 来为你处理所有加载,所以不会增加太多额外工作,你会使用一个标志告诉编译器为你创建代码...
tsc --module commonjs Alerts.ts
