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.

Súvisiace články