2016-09-10 11 views
1

によって活字体列挙型にアクセスしない...はどのように私は次のことを持っている序

enum NubDirection { 
    OUTWARD, 
    INWARD 
} 
... 
direction : NubDirection; 
... 
let index = Math.floor(Math.random() * 2) + 1; 
nub.direction = NubDirection[index]; 

しかし、これは

をスローエラーTS2322:タイプ「string」は「NubDirection」を型に代入できません。

あなたは何かがタイプ NubDirectionであることを宣言した場合、それは実際には数だ
+0

'nub'、不足している情報が何でありますか。 –

+0

明らかにする必要がありますが、私はそれを追加します... – Jackie

+0

これは今、最初の編集の前ではありませんでした –

答えて

4

var a = NubDirection.INWARD; 
console.log(a === 1); // true 

あなたは序数を使用して列挙型にアクセスすると、あなたが戻ってなく文字列の数を取得し、そのため、あなたNubDirectionと宣言されたものに割り当てることはできません。

あなたが行うことができます

nub.direction = NubDirection[NubDirection[index]]; 

この理由は、列挙型のようなものがJavaScriptでありませんということで、typescriptですが、列挙型を模倣方法はJSにそれをコンパイルするときにこれを行うことにより、次のとおりです。

var NubDirection; 
(function (NubDirection) { 
    NubDirection[NubDirection["OUTWARD"] = 0] = "OUTWARD"; 
    NubDirection[NubDirection["INWARD"] = 1] = "INWARD"; 
})(NubDirection || (NubDirection = {})); 

だから、このオブジェクトで終わる:

NubDirection[0] = "OUTWARD"; 
NubDirection[1] = "INWARD"; 
NubDirection["OUTWARD"] = 0; 
NubDirection["INWARD"] = 1; 
関連する問題