[解決済み] TypeScriptでenumに値が存在するかどうかを確認する
2022-02-15 23:44:09
質問
番号を受け取る
type = 3
で、この enum に存在するかどうかをチェックする必要があります。
export const MESSAGE_TYPE = {
INFO: 1,
SUCCESS: 2,
WARNING: 3,
ERROR: 4,
};
私が見つけた最良の方法は、すべてのEnum値を配列として取得し、それに対してindexOfを使用することです。しかし、出来上がったコードはあまり読みやすいものではありません。
if( -1 < _.values( MESSAGE_TYPE ).indexOf( _.toInteger( type ) ) ) {
// do stuff ...
}
もっと簡単な方法はないのでしょうか?
どのように解決するのですか?
これを文字列列列挙型で動作させたい場合は
Object.values(ENUM).includes(ENUM.value)
によると、文字列列の列挙はリバースマップされないからです。
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-4.html
:
Enum Vehicle {
Car = 'car',
Bike = 'bike',
Truck = 'truck'
}
になります。
{
Car: 'car',
Bike: 'bike',
Truck: 'truck'
}
というわけで、あとはやるだけです。
if (Object.values(Vehicle).includes('car')) {
// Do stuff here
}
のエラーが出た場合。
Property 'values' does not exist on type 'ObjectConstructor'
ということは、ES2017 をターゲットにしていないことになります。このtsconfig.jsonのコンフィグを使用するか、どちらかです。
"compilerOptions": {
"lib": ["es2017"]
}
あるいは、anyキャストを行うこともできます。
if ((<any>Object).values(Vehicle).includes('car')) {
// Do stuff here
}
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] enumを列挙するには
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】module.exports "モジュールが定義されていません"