2017-09-27 5 views
0

j'ai le code suivant dans mon projet:déclaration de variable fonctionne parfois, obtient « erreur d'espace de noms » d'autres

1 declare const fabric: any; 
2 class XCanvas { 
3  public canvas: fabric.Canvas; 
4 
5  constructor() { 
6   this.canvas = new fabric.Canvas(); 
7  } 
8 } 

J'utilise la merveilleuse bibliothèque fabricjs, mais j'utilise la dernière version, et le @ La bibliothèque de types est une version à deux versions périmées. J'ai du mal à l'utiliser en tapuscrit parce que ça donne toujours des erreurs, mais c'est le plus proche que j'ai eu. Donc, la ligne 6 se compile très bien, pas de problème. Mais la ligne 3 me donne cette erreur:

Cannot find namespace 'fabric'. 

Pourquoi cela se produit-il? Comment puis-je l'utiliser dans mon projet sans les dactylogrammes ??

Je ne l'importe pas ou ne l'exige pas car j'utilise une balise de script pour l'inclure dans le code HTML.

Répondre

2

Vous essayez d'utiliser un membre de quelque chose que vous avez déclaré comme any comme information de type, ce qui ne fonctionne pas tout à fait. Si fabric est any, vous ne pouvez pas utiliser fabric.canvas comme annotation de type. Code de travail:

declare const fabric: any; 

class XCanvas { 
    public canvas: any; // <-- 

    constructor() { 
     this.canvas = new fabric.Canvas(); 
    } 
}