2015-09-10 13 views
15

Mi piacerebbe in qualche modo essere in grado di impostare staticamente un enum sulla mia classe TypeScript ed essere in grado di fare riferimento sia internamente che esternamente tramite l'esportazione della classe. Sono abbastanza nuovo per TypeScript, quindi non sono sicuro della sintassi corretta per questo, ma di seguito è riportato qualche pseudo-codice (che estende un modello Backbone) che mi piacerebbe poter utilizzare per ottenere ciò di cui ho bisogno. ..È possibile impostare un enum statico all'interno di una classe TypeScript?

class UnitModel extends Backbone.Model { 
    static enum UNIT_STATUS { 
     NOT_STARTED, 
     STARTED, 
     COMPLETED 
    } 

    defaults(): UnitInterface { 
     return { 
      status: UNIT_STATUS.NOT_STARTED 
     }; 
    } 


    isComplete(){ 
     return this.get("status") === UNIT_STATUS.COMPLETED; 
    } 

    complete(){ 
     this.set("status", UNIT_STATUS.COMPLETED); 
    } 
} 

export = UnitModel; 

ho bisogno di essere in grado di fare riferimento alla enum all'interno di questa classe, ma ho anche bisogno di essere in grado di fare riferimento alla enum al di fuori della classe, come la seguente:

import UnitModel = require('path/to/UnitModel'); 
alert(UnitModel.UNIT_STATUS.NOT_STARTED);//expected to see 0 since enums start at 0 

risposta

29

Per fare ciò, è necessario prima definirlo all'esterno della classe, quindi assegnarlo come proprietà statica.

enum UNIT_STATUS { 
    NOT_STARTED, 
    STARTED, 
    COMPLETED, 
} 

class UnitModel extends Backbone.Model { 

    static UNIT_STATUS = UNIT_STATUS; 

    isComplete(){ 
     return this.get("status") === UNIT_STATUS.COMPLETED; 
    } 
} 

export = UnitModel; 
+0

dattiloscritto non consente di definire un enum all'interno di una classe. che lingua orribile! –

Problemi correlati