2013-01-16 12 views
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 { } 

それはこの長い名前に私は、このインターフェイスを使用する必要があるたびに使用するために理想的ではありません。私はそれがすべて悪くはないと思うが、私はそれが良いかどうか疑問に思っていた?

+1

この機能の提案は、https://github.com/Microsoft/TypeScript/issues/2956 –

答えて

5

は、私が実際に選択肢の上にオリジナルのソリューションを好みますエイリアスを使用したり、完全な名前空間を使用したりすると、本当に苦痛を与えます。

using myAlias = App.Namespace.Types; 

少なくとも、インポートするすべてのモジュールのエイリアスがあることは問題ではないことを意味します。

+4

私はあなたの意見に同意しますが、私はまだコンパイラが名前の衝突をキャッチする限り、オプションでなければならないと考えています。ありがとう – parliament

+1

あなたは決して知らない - 言語はまだベータ版であり、http://typescript.codeplex.com/で提案を受け入れているので、将来提案されると追加されるかもしれない。 – Fenton

3

私はあまりにもあなたが期待するように物事をエイリアスすることはできません迷惑です。私がやったことは、物事を短くするために省略された「名前空間」を使い終わったことです。あるusing文であなたが今までに処理しなければならなかった場合 - エイリアス(Interfaces)あなたが名前の衝突を得ることができるがなくても、

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

import RSV = module("views/researchSectionView") 
var r = new RSV.ResearchSectionView(); 
+0

にあります。これは私が知っていたが、気に入らなかった別の代替手段でした。スティーブには良い点があります。 +1 – parliament

関連する問題