Typescript: Classe 'x' utilisée avant sa déclaration

Créé le 11 août 2017  ·  4Commentaires  ·  Source: microsoft/TypeScript

##

Version de TypeScript: 2.4.1
Version de Visual Studio: 14.0.25420.01 mise à jour 3

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

Comportement prévisible:
La classe Polygon doit être connue correctement.

Comportement réel:
Une erreur se produit: Polygone de classe utilisé avant sa déclaration.

Cela se produit uniquement lorsque la case à cocher «Combiner la sortie JavaScript dans un fichier» dans les propriétés du projet est cochée et qu'un nom de fichier «xxx.js» est indiqué devant.

Solution:
1- Lorsque je change le nom du fichier "ParallelogramF.ts" en "ZParallelogramF.ts", le problème se résout et il se compile correctement !!!!
2- Quand je décoche la case «Combiner la sortie JavaScript dans un fichier», il se compile correctement !!!!

Changer la place de 'TypeScriptCompile Include = "ParallelogramF.ts"' dans le fichier ".csproj" du projet au dernier élément à l'intérieur de sa balise parent n'aide pas.

Question

Commentaire le plus utile

@arashebrahimi Essayez d'ajouter
/// <reference path="Polygon.ts"/>
tout en haut de votre fichier ParallelogramF.ts

Il peut y avoir une manière "plus récente" de faire cela, mais cela permet au compilateur de savoir pour compiler Polygon.ts avant ParallelogramF.ts lors de la compilation dans un seul fichier

Tous les 4 commentaires

Vous noterez que dans les cas où vous obtenez une erreur, le code compilé ne fonctionnera pas.

Merci pour votre réponse,

Je ne trouve pas la relation entre ce problème et votre réponse? !!!
Il est évident qu'en cas d'erreur, le code compilé ne fonctionnera pas !!!!!!!!!

Mais j'ai parlé d '«erreur» incorrecte lorsque je compile !!!!
Où j'ai parlé de «courir» ???

J'ai dit qu'il y avait un bogue lorsque je compile, il devrait être compilé sans erreur, mais j'obtiens une erreur «incorrecte» !!!!

@arashebrahimi Essayez d'ajouter
/// <reference path="Polygon.ts"/>
tout en haut de votre fichier ParallelogramF.ts

Il peut y avoir une manière "plus récente" de faire cela, mais cela permet au compilateur de savoir pour compiler Polygon.ts avant ParallelogramF.ts lors de la compilation dans un seul fichier

Je ne comprends pas comment ce comportement est attendu. Le problème est que la classe enfant n'est pas reconnue comme telle dans le même espace de noms - ce qui devrait, en théorie, éliminer le besoin d'appeler explicitement la référence. Le compilateur doit _know_ pour compiler la classe de base avant toutes les classes enfants.

Ce que je crois que @arashebrahimi dit, c'est qu'il semble être un problème d'alphabétisation où les classes enfants qui viennent après la classe de base (dans le nom de fichier) reconnaissent alphabétiquement la relation d'héritage, mais celles qui viennent avant ne le font pas. Cependant, j'ai trouvé que ce problème n'existe pas pour les interfaces.

Je suis en mesure de reproduire ce problème avec TS 2.5.3 dans Visual Studio version 15.4.5.

Cette page vous a été utile?
0 / 5 - 0 notes