Typescript: Klasse 'x', die vor ihrer Deklaration verwendet wird

Erstellt am 11. Aug. 2017  ·  4Kommentare  ·  Quelle: microsoft/TypeScript

##

TypeScript-Version: 2.4.1
Visual Studio Version: 14.0.25420.01 Update 3

Datei: ParallelogramF.ts
namespace JMath { export class ParallelogramF extends Polygon { ... } }
Datei: Polygon.ts
namespace JMath { export class Polygon { } }

Erwartetes Verhalten:
Klassenpolygon muss korrekt bekannt sein.

Tatsächliches Verhalten:
Fehler tritt auf: Klassenpolygon, das vor seiner Deklaration verwendet wurde.

Dies tritt nur auf, wenn das Kontrollkästchen "JavaScript-Ausgabe in Datei kombinieren" in den Projekteigenschaften aktiviert ist und ein Dateiname "xxx.js" davor angegeben ist.

Lösung:
1- Wenn ich den Namen der Datei "ParallelogramF.ts" in "ZParallelogramF.ts" ändere, wird das Problem behoben und es wird korrekt kompiliert !!!!
2- Wenn ich das Kontrollkästchen "JavaScript-Ausgabe in Datei kombinieren" deaktiviere, wird es korrekt kompiliert !!!!

Das Ändern der Position von 'TypeScriptCompile Include = "ParallelogramF.ts"' in der ".csproj" -Datei des Projekts auf das letzte Element in seinem übergeordneten Tag hilft nicht.

Question

Hilfreichster Kommentar

@arashebrahimi Versuchen Sie hinzuzufügen
/// <reference path="Polygon.ts"/>
ganz oben in Ihrer ParallelogramF.ts-Datei

Möglicherweise gibt es eine "neuere" Methode, die den Compiler darüber informiert, dass er Polygon.ts vor ParallelogramF.ts kompilieren muss, wenn er in eine einzelne Datei kompiliert wird

Alle 4 Kommentare

Sie werden feststellen, dass in den Fällen, in denen Sie einen Fehler erhalten, der kompilierte Code nicht ausgeführt wird.

Danke für die Antwort,

Ich kann die Beziehung zwischen diesem Problem und Ihrer Antwort nicht finden? !!!
Es ist offensichtlich, dass der kompilierte Code bei einem Fehler nicht ausgeführt wird !!!!!!!!!

Aber ich habe beim Kompilieren über einen falschen 'Fehler' gesprochen !!!!
Wo ich über "rennen" gesprochen habe ???

Ich sagte, es gibt einen Fehler beim Kompilieren. Es sollte ohne Fehler kompiliert werden, aber ich bekomme einen 'falschen' Fehler !!!!

@arashebrahimi Versuchen Sie hinzuzufügen
/// <reference path="Polygon.ts"/>
ganz oben in Ihrer ParallelogramF.ts-Datei

Möglicherweise gibt es eine "neuere" Methode, die den Compiler darüber informiert, dass er Polygon.ts vor ParallelogramF.ts kompilieren muss, wenn er in eine einzelne Datei kompiliert wird

Ich verstehe nicht, wie dies erwartet wird. Das Problem ist, dass die untergeordnete Klasse nicht im selben Namespace als solche erkannt wird - was theoretisch die Notwendigkeit beseitigen sollte, die Referenz explizit aufzurufen. Der Compiler sollte wissen, dass er die Basisklasse vor allen untergeordneten Klassen kompiliert.

Ich glaube, @arashebrahimi gibt an, dass es sich anscheinend um ein Alphabetisierungsproblem handelt, bei dem

Ich kann dieses Problem mit TS 2.5.3 in Visual Studio Version 15.4.5 reproduzieren.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

uber5001 picture uber5001  ·  3Kommentare

seanzer picture seanzer  ·  3Kommentare

dlaberge picture dlaberge  ·  3Kommentare

Antony-Jones picture Antony-Jones  ·  3Kommentare

weswigham picture weswigham  ·  3Kommentare