2017-01-12 11 views
0
次のように私は、文字列の列挙型宣言している

を使用して値に文字列を変換します。文字列(バックエンドから)を値に変換する一般的なマッピング関数が必要です(例:"None" =>BootDeviceSelector.noChange)。私はパラメータと関数の出力を宣言する方法を知らない(多分anyよりも良い)。この関数の値に変換して値のリストを渡して、名前空間名(例:BootDeviceSelector)として検索することを期待します。typescriptです一般的な関数は、文字列の列挙型

またはワンライナーは、このような何か、十分に良いです:

let a: BootDeviceSelector = (<any>BootDeviceSelector)['Pxe']; 
console.log(a); 

しかし、ここで私はundefinedを持っています。

私はtypescript 2.0.10とAngular 2.3.1を使用していますが、アップグレードすることはできますが、codelyzerパッケージでlintingを残しておきます。

+0

何がポイントですか? 'BootDeviceSelector.noChange'は' 'None ''で、 '' None' 'をすでに取得しています。 –

+0

'' None ''はバックエンドからのものです。アプリケーションでは 'SomeObject.bootDeviceSelector:BootDeviceSelector' - クラス 'BootDeviceSelector'のクラスプロパティ – koral

+0

' let a = "None"と 'let a = BootDeviceSelector.noChange'の間に違いはありません。 'BootDeviceSelector'で' None'に対応する参照を見つけようとすると、あなたが始めたもので終わるので、何も得られません。 –

答えて

0

Reverse-Mapping for String Enumsを確認してください。例:

enum BootDeviceSelector { 
    noChange = <any>'None', 
    PXE_ISCSI = <any>'Pxe' 
} 

let bds: BootDeviceSelector = BootDeviceSelector.PXE_ISCSI; 
関連する問題