Re-exportă enum în TypeScript


Am un enum declarat undeva într-un submodul și aș dori să-l reexport în proiectul meu actual.

modul :

export enum name {
  TOTO = "toto",
  TITI = "titi",
}

exportă :

import { name } from "module"
export type name2 = name

index.ts:

switch (var) {
  case name2.toto: // 'name2' only refers to a type, but is being used as a value here.
}

Cum pot să nu pierd informația că name2 este inițial un enum?

Răspuns #1

Reexportul tău ar trebui să fie:

export { name as name2 };

Acesta poate fi folosit cu orice tip de nume declarat: variabilă, enumerare, clasă etc.

Răspunsul #2

Metoda sugerată nu a funcționat pentru mine, deoarece import nume astfel:

import * as API from './__generated__/api/data-contracts.ts' 

În astfel de circumstanțe, nu îl exporți pur și simplu ca:

export { API.name as name2 };

pentru că este o eroare.

Din fericire, am învățat în sfârșit o modalitate de a face acest lucru, datorită [email #javascript:

export type name2 = API.name;
export const name2 = API.name;

În acest fel, obținem ce e mai bun din ambele lumi - tipuri și valori. Și TS va stabili singur pe care dintre ele o dorește.