typescript - Kako uvesti Enum


Kreirao sam enum, ali imam problema s uvozom i korištenjem enuma u VS15.

Ovo je enumeracija koja se nalazi u enums.ts:

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

Visual Studio vidi ovaj enum bez da ga uopće uvozi i stoga ne daje grešku pri kompajliranju. Ali tijekom izvođenja, javlja se greška

 Cannot read property 'Archived' of undefined.

Tako da sada pokušavam uvesti to kao što uvezim druge klase:

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

Visual Studio sada daje pogrešku u vrijeme kompajliranja:

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

Pa kako da uvezem enumeraciju?

Odgovor #1

Nedostajala mi je ključna riječ export:

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

Tada je radilo kako se očekivalo. (Ali pogledajte komentar @Martin Braun ispod)

Odgovor #2

Dobit ćete istu Cannot read property 'Foo' of undefined. pogrešku pri izvođenju kada slučajno definirate svoj Enum u jednoj od TypeScript deklaracijskih datoteka (*.d.ts) jer se te datoteke ne transpajliraju u JavaScript.

Više detalja s primjerom aplikacije možete pronaći ovdje.

Odgovor #3

Ljubazno pokušajte ovo. Meni radi.

enums.ts

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

i u potrebnoj .ts datoteci importirajte na način prikazan u nastavku:

import {Category} from './enums'

Odgovor #4

Upravo sam naišao na nešto slično. U mom slučaju, morao sam osigurati da ime izvezenog enum-a bude drugačije od imena datoteke.

tj.

izvoz enum AccessMode u datoteci access-mode.ts bi propao. izvoz enum AccessMode u datoteci access-modes.ts bi radio.

Povezani članci