2016-04-27 14 views
0

Ich konvertiere JavaScript-Code in TypeScript und bleibe auf dem besten Weg, meine Klassendefinitionen zu konvertieren.Unterstützt TypeScript die Klassendeklaration für eine Namespace-Klasse?

Sie sind von Marionette erweitert, und die Klassennamen sind Namespaced. Zum Beispiel das JavaScript, um die 'xyz' Namespace:

xyz.Marionette.AppRouter = Marionette.AppRouter.extend({ 
    instance_name: "AppRouter", 

    functionName: function(options) { 
    } 
}); 

Ich habe versucht, die Schaffung dieser Klasse entsprechenden Befehl in Typoskript:

class xyz.Marionette.AppRouter extends Marionette.AppRouter { 

aber diese Syntax unterstützt nicht zu sein scheinen.

Ist es möglich, eine Klasse in TypeScript mit Namespacing zu deklarieren?

Die Antworten unten (soweit) sind hilfreich, aber ich weiß immer noch nicht, wie ich diese Definition ausdrücken soll, oder auch wenn es möglich ist.

Antwort

0

Klasse nameSpace.Marionette.AppRouter erweitert Marionette.AppRouter {

Deklarieren Sie den Namespace und dann die Klasse:

namespace nameSpace.Marionette { 
    export class AppRouter { 

    } 
} 
+0

Danke, das funktioniert großartig! Ich bin mir immer noch nicht ganz sicher über die Definition der Klasse, aber in Bezug auf die Erweiterung. Geht es in die Exportklasse? Oder unter dem Namespace-Block? Bei beiden handelt es sich um generierte TypeScript-Fehler. Vielen Dank im Voraus. – Marc

0

Ich habe versucht, diese bis spöttisch aber hatte ein Problem Referenzierung der Basis-AppRouter, weil die Namespaces identisch sind. Es funktioniert, wenn ich ein Qualifikationsmerkmal von "Basis" zum ersten Namensraum hinzufüge.

namespace base.Marionette { 

    export class AppRouter { 

     Foo() { 
      return "Hello"; 
     } 
    } 
} 

namespace nameSpace.Marionette { 

    export class AppRouter2 extends base.Marionette.AppRouter { 

     Bar() { 
      var hello = this.Foo(); 
     } 
    } 
} 
+0

Vielen Dank für Ihre Hilfe. Ich habe immer noch Schwierigkeiten zu verstehen, warum ich das nicht einfach in TypeScript schreiben kann: class nameSpace.Marionette.AppRouter erweitert Marionette.AppRouter { instance_name: string; }); Fehle ich etwas? – Marc

Verwandte Themen