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.
