TypeScript - Ako importovať Enum
Vytvoril som enum, ale mám problém s importovaním a používaním enumu vo VS15.
Toto je výčet, ktorý sa nachádza v súbore enums.ts:
enum EntityStatus {
New = 0,
Active = 1,
Archived = 2,
Trashed = 3,
Deleted = 4
}
Visual Studio vidí tento enum bez toho, aby ho importoval, a preto nevydáva chybu pri kompilácii. Ale pri behu programu sa vyhodí chyba
Cannot read property 'Archived' of undefined.
Takže teraz sa pokúšam importovať to, ako importujem iné triedy:
import {EntityStatus} from "../../core/enums";
Visual Studio teraz dáva chybu počas kompilácie:
"...enums is not a module ..."
Ako teda importujem enum?
Odpoveď č. 1
Chýbalo mi kľúčové slovo export:
export enum EntityStatus {
New = 0,
Active = 1,
Archived = 2,
Trashed = 3,
Deleted = 4
}
Potom to fungovalo podľa očakávania. (Ale pozri komentár @Martin Braun nižšie)
Odpoveď č. 2
Dostanete rovnakú chybu za behu Cannot read property 'Foo' of undefined., keď náhodou definujete svoj Enum v jednom z TypeScript deklaratívnych súborov (*.d.ts), pretože tieto súbory sa neprekladajú do JavaScriptu.
Viac podrobností s ukážkovou aplikáciou nájdete tu.
Odpoveď č. 3
Prosím, vyskúšajte toto. Mne to funguje
enums.ts
export enum Category {Cricket,Tennis,Golf,Badminton}
a v požadovanom .ts súbore importujte spôsobom uvedeným nižšie:
import {Category} from './enums'
Odpoveď č. 4
Práve som narazil na niečo podobné. V mojom prípade som musel zabezpečiť, aby názov exportovaného výčtu bol odlišný od názvu súboru.
t. j.
export enum AccessMode v súbore access-mode.ts by zlyhal. export enum AccessMode v súbore access-modes.ts by fungoval.
