2015-09-10 17 views
15

Ich möchte irgendwie in der Lage sein, eine Enum auf meiner TypeScript-Klasse statisch zu setzen und in der Lage sein, es sowohl intern als auch extern zu referenzieren, indem Sie die Klasse exportieren. Ich bin ziemlich neu in TypeScript, daher bin ich mir nicht sicher, welche Syntax dafür richtig ist, aber unten ist ein Pseudo-Code (der ein Backbone-Modell erweitert), den ich gerne verwenden würde, um das zu erreichen, was ich brauche. ..Können Sie eine statische Enumeration in einer TypeScript-Klasse festlegen?

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; 

ich brauche die enum innerhalb dieser Klasse verweisen zu können, aber ich brauche auch die enum verweisen außerhalb der Klasse zu können, wie die folgenden:

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

Antwort

29

Um dies zu tun, müssten Sie es zuerst außerhalb der Klasse definieren und dann als statische Eigenschaft zuweisen.

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

typescript erlaubt es nicht, eine enum innerhalb einer Klasse zu definieren. Was für eine schreckliche Sprache! –

Verwandte Themen