TypeScriptで列挙型のライブラリをループ処理する適切な方法は何ですか? (現在typescrip 1.8.1を使用しています)
私は以下の列挙型を持っています:
export enum MotifIntervention {
Intrusion,
Identification,
AbsenceTest,
Autre
}
export class InterventionDetails implements OnInit
{
constructor( private interService: InterventionService )
{
let i:number = 0;
for (let motif in MotifIntervention) {
console.log( motif );
}
}
表示される結果はリストです
0
1
2
3
Intrusion,
Identification,
AbsenceTest,
Autre
Enumには4つの要素しかないので、ループには4回の反復だけが必要です。enumのインデックス番号と思われる0 1 2と3は必要ありません。
2つの選択肢
for (let item in MotifIntervention) {
if (isNaN(Number(item))) {
console.log(item);
}
}
または
Object.keys(MotifIntervention).filter(key => !isNaN(Number(MotifIntervention[key])));
( 遊び場のコード )
文字列の列挙は、通常のものとは外観が異なります。次に例を示します。
enum MyEnum {
A = "a",
B = "b",
C = "c"
}
にコンパイル:
var MyEnum;
(function (MyEnum) {
MyEnum["A"] = "a";
MyEnum["B"] = "b";
MyEnum["C"] = "c";
})(MyEnum || (MyEnum = {}));
これはあなたにこのオブジェクトを与えるだけです:
{
A: "a",
B: "b",
C: "c"
}
このようにしてすべてのキー(["A", "B", "C"]
)を取得できます。
Object.keys(MyEnum);
そして値(["a", "b", "c"]
):
Object.keys(MyEnum).map(key => MyEnum[key])
または Object.values() を使用します。
Object.values(MyEnum)