114 votes

Comment importer un enum

J'ai créé un enum, mais j'ai du mal à l'importation et à l'aide de l'enum dans VS15.

C'est l'enum qui est contenue dans les énumérations.ts:

enum EntityStatus {
     New = 0,
     Active = 1,
     Archived = 2,
     Trashed = 3,
     Deleted = 4
}

Visual Studio voit cette enum sans même l'importation et donc ne donne pas une erreur de compilation. Mais au moment de l'exécution, une erreur est renvoyée

 Cannot read property 'Archived' of undefined.

Donc maintenant j'essaie de l'importer comme je l'ai importer d'autres classes:

 import {EntityStatus} from "../../core/enums";

Visual Studio donne une erreur de compilation:

 "...enums is not a module ..."

Alors, comment puis-je importer les enum?

144voto

Greg Gum Points 1441

Il me manquait le mot-clé d'exportation:

  export enum EntityStatus {
      New = 0,
      Active = 1,
      Archived = 2,
      Trashed = 3,
      Deleted = 4
 }
 

Ensuite, cela a fonctionné comme prévu.

45voto

luk355 Points 91

Vous obtiendrez la même erreur d'exécution Cannot read property 'Foo' of undefined. lorsque vous définissez votre énumération dans l'un des fichiers de déclaration TypeScript ( *.d.ts ), car ces fichiers ne sont pas transférés dans JavaScript.

Plus de détails avec un exemple d'application peuvent être trouvés ici .

29voto

Sachin Kalia Points 44

Veuillez essayer ceci. Ça marche pour moi

enums.ts

 export enum  Category {Cricket,Tennis,Golf,Badminton}
 

et dans l’importation de fichiers .ts requise comme indiqué ci-dessous:

 import {Category} from './enums'
 

23voto

Darren Yuhar Points 43

J'ai juste rencontré quelque chose de similaire. Dans mon cas, je devais m'assurer que le nom enum exporté était différent du nom du fichier.

c'est à dire.

export enum AccessMode dans le fichier access-mode.ts échouera. export enum AccessMode dans le fichier access-modes.ts

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X