2015-09-10 6 views
15

私は何とか私のTypeScriptクラスで列挙型を静的に設定し、そのクラスをエクスポートすることで内部的にも外部的にも参照できるようにしたいと考えています。私はかなりTypeScriptに慣れているので、正しい構文がわからないのですが、必要なものを達成するために使用できるようにしたいと思う疑似コード(Backbone Modelを拡張しています)があります。 ..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; 

私は、このクラスの内部で列挙型を参照できるようにする必要がありますが、私はまた、次のように、クラスの外で列挙型を参照できるようにする必要があります。

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

答えて

29

これを行うには、最初にクラスの外に定義し、それを静的プロパティとして割り当てる必要があります。

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では、クラス内で列挙型を定義することはできません。どんなひどい言葉ですか? –

関連する問題