web-dev-qa-db-ja.com

Typescriptのconst列挙

TypeScriptを使用しているReactアプリケーションがあります。現在、const列挙型の問題に直面しています。列挙型は次のとおりです。

export const enum Snack {
    Apple = 0,
    Banana = 1,
    Orange = 2,
    Other = 3
}

一致させようとしているサービスは値を返していませんが、列挙内のアイテムのインデックスを返しています。したがって、たとえば、ユーザーがAppleで軽食をするように設定されている場合、サービスはそのユーザーに対して「Apple」ではなく0を返します。理想的には、私は次のようなことをしたいです:

var snackIndex = UserSnack.type; // returning 0 in this example
var userSnack = Snack[snackIndex]; // would return 'Apple'

同様のことをしようとすると、次のエラーが表示されます。

エラーTS2476:const enumメンバーは、文字列リテラルを使用してのみアクセスできます。

データを受信して​​いるサービスが文字列を返さないため、これを機能させるのに問題があります。

どんな助けも大歓迎です。

19
addam

列挙型のconstは、列挙型が完全に消去されることを意味します。つまり、任意の値でインデックスを作成することはできません。 const修飾子を削除するだけです。

TypeScriptで異なるenumバリアントはどのように機能しますか? も参照してください。

25
Ryan Cavanaugh