2013-01-16 11 views
9

In C# posso fare questo:Dichiarare un solo tipo - "usando" equivalente per singolo tipo

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

Esiste un equivalente tipografico?

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

Il più vicino che può ottenere è:

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

non è l'ideale per utilizzare questo nome lungo ogni volta che ho bisogno di utilizzare questa interfaccia. Immagino che non sia poi così male ma mi stavo chiedendo se c'è di meglio?

+1

Il suggerimento per questa funzione è disponibile qui https://github.com/Microsoft/TypeScript/issues/2956 –

risposta

5

Io in realtà preferisco la soluzione originale rispetto alle alternative:

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

Senza avere l'alias (Interfaces) si potrebbe ottenere la denominazione collisioni - che se avete mai avuto da maneggiare con using dichiarazioni è un vero dolore quando si finisce usando un alias o usando lo spazio dei nomi completo.

using myAlias = App.Namespace.Types; 

Almeno avere un alias per tutti i moduli che si importa significa che questo non sarà un problema.

+4

Sono d'accordo con il tuo punto, anche se continuo a pensare che dovrebbe essere un'opzione a patto che il compilatore catturi il nome collisioni. Grazie – parliament

+1

Non si sa mai - la lingua è ancora in beta e stanno accettando suggerimenti su http://typescript.codeplex.com/ - quindi potrebbe essere aggiunto in futuro se viene suggerito. – Fenton

3

Anch'io sono infastidito dal fatto che non si possano fare alias cose come ci si potrebbe aspettare. Quello che ho fatto è finito con l'uso di 'namespace' abbreviati per far sì che le cose non accadessero.

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

Sì, quella era un'altra alternativa di cui ero consapevole ma che non mi piaceva. Steve ha un buon punto però. +1 – parliament

Problemi correlati