我正在尝试将一些未正确命名空间的代码转换为它自己的命名空间,而又不丢失当前功能(在转换过程中)。
原始代码:
// (org)
module General.Admin.Dialogs {
export class LoginDialog {
// details
}
}
最终过渡后:
// (new)
namespace Admin {
export module Dialogs{
export class Login {
}
}
}
不过,我需要通过在一个名称空间/模块中对对象进行 aliasing 来保持某些当前功能正常运行,但是由于命名冲突,编译器(TypeScript 2.3)并不满意(它假定因为我没有指定根名称空间,所以它使用了当前的根名称空间:
namespace Admin {
export module Dialogs{
export class Login {
}
}
}
module General.Admin.Dialogs {
export var LoginDialog = Admin.Dialogs.Login;
}
编译器假定 Admin.Dialogs.Login
位于General
(旧)模块/命名空间中,而不是上面声明的Admin.Dialogs
(新)中。有什么魔术可以用来使它起作用吗?
答案 0 :(得分:0)
我在编写Quesiton时实际上解决了它,但是我认为可能还有其他更好的方法,或者这可能会帮助遇到同样困难的其他人,所以这是我的答案。由于转换完成后我必须再次触摸该文件,因此我添加了另一个中间模块来解决命名冲突(很麻烦,但是中间模块也将被删除,所以没什么大不了的。)
namespace Admin {
export module Dialogs{
export class Login {
}
}
}
module AdminTransition {
export var LoginDialog = Admin.Dialogs.Login
}
module General.Admin.Dialogs {
export var LoginDialog = AdminTransition.LoginDialog;
}