9

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

using IAnyType = App.Namespace.Types.IAnyType ;
class BaseClass : IAnyType { }

有打字稿等价物吗?

//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   

我能得到的最接近的是:

import Interfaces = App.Widgets.Interfaces;
class BaseDialog implements Interfaces.IDialogOptions { }

每次需要使用这个接口的时候都用这个长名字不太理想。我想这还不是很糟糕,但我想知道是否有更好的?

4

2 回答 2

5

我实际上更喜欢您的原始解决方案而不是替代方案:

import Interfaces = App.Widgets.Interfaces;
class BaseDialog implements Interfaces.IDialogOptions { }

如果没有别名 ( Interfaces),您可能会遇到命名冲突 - 如果您曾经不得不处理 withusing语句,那将是一个真正的痛苦,因为您最终使用别名或使用完整的命名空间。

using myAlias = App.Namespace.Types;

至少为您导入的所有模块设置一个别名意味着这不会成为问题。

于 2013-01-16T15:06:56.717 回答
3

我也很恼火,你不能像你期望的那样给事物起别名。我所做的最终是使用缩写的“命名空间”来保持简短。

import RSV = module("views/researchSectionView")
var r = new RSV.ResearchSectionView();
于 2013-01-16T03:00:43.577 回答