2017-10-15 5 views
0

Nouveau à tapuscrit (mais pas OO Design) Je ne comprends pas ce qui se passeerreur dactylographiée Impossible de lire la propriété « RÉPERTOIRE » undefined

fichier

application.ts

class 
    APPLICATION{ 

     constructor(){ 
      console.log("constructor APPLICATION") 
      this.database = new REPOSITORY 
     } 

     database: REPOSITORY 
} 

new APPLICATION 

import { REPOSITORY } from "./repository" 

repository.ts fichier

export 

class 
    REPOSITORY { 

     constructor() { 
      console.log("constructor de REPOSITORY") 
     } 

} 

et je reçois l'erreur

this.database = new repository_1.REPOSITORY; 
            ^

TypeError: Impossible de lire la propriété 'RÉPERTOIRE' undefined à une nouvelle application (Z: \ Documents \ Phi \ Développement \ tapuscrit \ test \ application.js: 6: 41)

Toute idée?

Répondre

0

Je ne crois pas que les importations soient hissées. Essayez de déplacer import { REPOSITORY } from "./repository" dans votre code.

0

Votre déclaration import pour REPOSITORY se produit après REPOSITORY est utilisé dans le constructeur pour APPLICATION, ce qui signifie qu'il n'a pas encore été défini dans le constructeur (l'affectation variable issues de l'instruction d'importation ne soit pas levée). Vous devrez importer avant utilisation:

import { REPOSITORY } from "./repository" 

class APPLICATION { 
    constructor(){ 
     console.log("constructor APPLICATION") 
     this.database = new REPOSITORY(); 
    } 
    database: REPOSITORY 
} 
0

Vous avez parfaitement raison! Je pensais que le compilateur était en deux passes et que l'ordre de ces instructions n'était pas imposé. Comme je pense que ce mécanisme d'import/export devrait être automatique, je préférerais le cacher à la fin du code! Dommage !

Merci