Typoskript interne Module über mehrere Dateien

stimmen
5

Nehmen Sie die folgende Klassendefinition mit Typoskript in Animal.ts:

module Animals
{
    export class Animal { }    
}

Wenn ich einen Hund Klasse in einer separaten Datei erstellen möchten, sagen in Dog.ts mit diesem Code:

module Animals
{
    export class Dog extends Animal { }
}

der Name „Animal“ existiert nicht im aktuellen Bereich, ist der Fehler, den ich in Klassendefinition Hund bekommen.

Hinzufügen der folgenden Zeile Dog.ts

/// <reference path=Animal.ts/>

sondern legt den Kompilierungsfehler, warum ist dies notwendig, wenn beide Klassen innerhalb des gleichen Moduls definiert werden?

Mit anderen Worten, ich möchte Modul Erklärungen Dateien mit jeder Klasse oder Schnittstellendefinition in einer eigenen Datei über zu überspannen. Ist dies auch Best Practice?

Veröffentlicht am 08/10/2012 um 19:06
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
5

Zunächst einmal, wenn man sich einmal die beiden Dateien kompilieren mit

tsc Animal.ts Dog.ts

alles wird gut. Wenn Typoskript Dateien kompiliert, muss der Compiler bewusst gemacht werden , was tatsächlich Dateien Constitué das Programm . Dies kann Referenzen unter Verwendung von Quelle erfolgen mit ///oder alle Dateien in den Compiler bereitgestellt wird . Dies ist etwas anders als andere Sprachen wie java, was zu einer Zwischendarstellung zusammenstellen und haben eine Vorstellung von einem , CLASSPATHwo für andere Dateien zu suchen , den Teil des Programms sind.

Beantwortet am 08/10/2012 um 19:31
quelle vom benutzer

stimmen
2

Die /// Referenz ist notwendig, weil der Compiler muss wissen, wo Tier irgendwie definiert ist. Es kann nicht wissen, welche Quelldatei ist es in, ohne dass Sie es zu sagen, wo sie suchen müssen.

Ich bin mir nicht sicher, dies ist eine bewährte Methode, per se (müßte mehr über Ihre Anwendung wissen), aber ich glaube kaum, es ist ein Anti-Muster, so denke ich, Sie fühlen sich frei, können das zu tun. Module in Typoskript wird bewusst nach oben offen für diese Art von Muster zu ermöglichen.

Beantwortet am 08/10/2012 um 19:11
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more