Braun Nest πŸš€

Check if value exists in enum in TypeScript

February 17, 2025

πŸ“‚ Categories: Javascript
🏷 Tags: Typescript Enums
Check if value exists in enum in TypeScript

TypeScript, a fashionable superset of JavaScript, presents enums for enhanced codification readability and maintainability. Enums specify a fit of named constants, making your codification much expressive and little susceptible to errors. However however bash you effectively cheque if a fixed worth exists inside a outlined enum successful TypeScript? This is a communal project, peculiarly once dealing with information from outer sources oregon person enter. Mastering this method is indispensable for strong and dependable TypeScript functions. This article volition research assorted strategies, demonstrating champion practices and offering insightful examples to aid you confidently grip enum worth validation.

Methodology 1: Utilizing the successful function

The easiest attack is utilizing the successful function. This function checks if a place exists inside an entity, together with enums. It’s a speedy and casual manner to find if a worth is a legitimate associate of the enum.

Illustration:

enum Position { Progressive, Pending, Inactive } relation isValidStatus(position: immoderate): boolean { instrument position successful Position; } console.log(isValidStatus('Progressive')); // actual console.log(isValidStatus(Position.Progressive)); // actual console.log(isValidStatus('Accomplished')); // mendacious 

Technique 2: Entity.values()

For TypeScript variations 2.four and future, Entity.values() offers a handy manner to retrieve an array of an enum’s values. This permits you to usage array strategies similar contains() for checking beingness.

Illustration:

enum Position { Progressive, Pending, Inactive } relation isValidStatus(position: immoderate): boolean { instrument Entity.values(Position).contains(position); } console.log(isValidStatus(Position.Progressive)); // actual console.log(isValidStatus('Progressive')); // actual (Drawstring enums) console.log(isValidStatus(1)); // actual (Numeric enums) console.log(isValidStatus('Accomplished')); // mendacious 

Technique three: Kind Guards

Kind guards message a much kind-harmless attack. They constrictive behind the kind inside a conditional artifact, enhancing codification readability and stopping sudden behaviour. This is peculiarly utile once dealing with federal varieties oregon outer information.

Illustration:

enum Position { Progressive, Pending, Inactive } relation isStatus(position: immoderate): position is Position { instrument Entity.values(Position).contains(position); } fto userStatus: drawstring | Position = 'Progressive'; if (isStatus(userStatus)) { // TypeScript present is aware of userStatus is of kind Position console.log(userStatus); } 

Methodology four: Reverse Mapping (Drawstring Enums)

For drawstring enums particularly, creating a reverse mapping tin beryllium generous. This includes creating a lookup entity wherever keys are enum values and values are enum members. This attack gives accelerated lookups, particularly for predominant checks.

Illustration:

enum Position { Progressive = 'progressive', Pending = 'pending', Inactive = 'inactive' } const StatusMap = { progressive: Position.Progressive, pending: Position.Pending, inactive: Position.Inactive, }; relation isValidStatus(position: drawstring): boolean { instrument position successful StatusMap; } console.log(isValidStatus('progressive')); // actual 
  • Repeatedly validating enum values prevents runtime errors and ensures information integrity.
  • Selecting the correct technique relies upon connected TypeScript interpretation, enum kind, and show necessities.
  1. Place the due methodology based mostly connected your wants.
  2. Instrumentality the chosen technique inside your validation logic.
  3. Completely trial your implementation with assorted inputs.

Knowing person intent is captious for effectual Search engine optimization. Once customers hunt for “Cheque if worth exists successful enum successful TypeScript,” they’re wanting for applicable options and broad examples, not conscionable theoretical explanations. Offering concise, actionable accusation meets this intent straight.

Infographic about TypeScript Enum Validation

  • Kind guards supply compile-clip condition and better codification readability.
  • Reverse mapping provides show advantages for drawstring enums.

Research additional connected enum utilization successful TypeScript: TypeScript Handbook: Enums.

Larn much astir kind guards: TypeScript Handbook: Kind Guards.

For successful-extent JavaScript cognition, sojourn: MDN Internet Docs: JavaScript.

Seat applicable purposes of enums successful a existent-planet task: Lawsuit Survey: Enum Utilization successful E-commerce Level.

FAQ

Q: What are the advantages of utilizing enums successful TypeScript?

A: Enums better codification readability, maintainability, and kind condition by offering named constants for a fit of values.

Effectively checking enum values is important for gathering strong TypeScript purposes. Whether or not you usage the successful function, Entity.values(), kind guards, oregon reverse mapping, selecting the correct technique ensures codification readability, maintainability, and prevents sudden behaviour. By making use of these methods, you tin compose much predictable and dependable codification. For deeper dives and associated ideas, research sources similar the TypeScript Handbook and MDN Internet Docs, and see however these ideas use to bigger tasks, impacting general codification choice and show. Commencement implementing these strategies present for cleaner, much businesslike TypeScript codification.

Question & Answer :
I have a figure kind = three and person to cheque if it exists successful this enum:

export const MESSAGE_TYPE = { Information: 1, Occurrence: 2, Informing: three, Mistake: four, }; 

The champion manner I recovered is by getting each Enum Values arsenic an array and utilizing indexOf connected it. However the ensuing codification isn’t precise legible:

if( -1 < _.values( MESSAGE_TYPE ).indexOf( _.toInteger( kind ) ) ) { // bash material ... } 

Is location a easier manner of doing this?

If you privation this to activity with drawstring enums, you demand to usage Entity.values(ENUM).consists of(ENUM.worth) due to the fact that drawstring enums are not reverse mapped, in accordance to https://www.typescriptlang.org/docs/handbook/merchandise-notes/typescript-2-four.html#drawstring-enums:

enum Conveyance { Auto = 'auto', Motorcycle = 'motorcycle', Motortruck = 'motortruck' } 

turns into:

{ Auto: 'auto', Motorcycle: 'motorcycle', Motortruck: 'motortruck' } 

Truthful you conscionable demand to bash:

if (Entity.values(Conveyance).consists of('auto')) { // Bash material present } 

If you acquire an mistake for: Place 'values' does not be connected kind 'ObjectConstructor', past you are not concentrating on ES2017. You tin both usage this tsconfig.json config:

"compilerOptions": { "lib": ["es2017"] } 

Oregon you tin conscionable bash an immoderate formed:

if ((<immoderate>Entity).values(Conveyance).consists of('auto')) { // Bash material present }