声明单一类型 - "使用"等效于单一类型

par*_*ent 9 typescript

在C#中,我可以这样做:

using IAnyType = App.Namespace.Types.IAnyType ;
class BaseClass : IAnyType { }
Run Code Online (Sandbox Code Playgroud)

是否有一个等价的文件?

//BAD:
import IDialogOptions = App.Widgets.Interfaces.IDialogOptions; //A module cannot be aliased as a non-module type
class BaseClass implements IDialogOptions { }

//BAD:     
declare var IDialogOptions: App.Widgets.Interfaces.IDialogOptions;
class BaseClass implements IDialogOptions { } //The name IDialogOptions does not exist in the current context   
Run Code Online (Sandbox Code Playgroud)

我能得到的最接近的是:

import Interfaces = App.Widgets.Interfaces;
class BaseDialog implements Interfaces.IDialogOptions { }
Run Code Online (Sandbox Code Playgroud)

每次我需要使用这个界面时,使用这个长名称并不理想.我想这不是很糟糕,但我想知道是否有更好的?

Fen*_*ton 5

实际上,我更喜欢你的原始解决方

import Interfaces = App.Widgets.Interfaces;
class BaseDialog implements Interfaces.IDialogOptions { }
Run Code Online (Sandbox Code Playgroud)

没有别名(Interfaces)你就可以得到命名冲突 - 如果你不得不处理using语句,那么最终使用别名或使用完整的命名空间是一件非常痛苦的事情.

using myAlias = App.Namespace.Types;
Run Code Online (Sandbox Code Playgroud)

至少为您导入的所有模块添加别名意味着这不会成为问题.

  • 我同意你的观点,虽然我仍然认为它应该是一个选项,只要编译器能够捕获名称冲突.谢谢 (4认同)