Search code examples

Check if value exists in enum in TypeScript

I receive a number type = 3 and have to check if it exists in this enum:

export const MESSAGE_TYPE = {
    INFO: 1,
    SUCCESS: 2,
    WARNING: 3,
    ERROR: 4,

The best way I found is by getting all Enum Values as an array and using indexOf on it. But the resulting code isn't very legible:

if( -1 < _.values( MESSAGE_TYPE ).indexOf( _.toInteger( type ) ) ) {
    // do stuff ...

Is there a simpler way of doing this?


  • If you want this to work with string enums, you need to use Object.values(ENUM).includes(ENUM.value) because string enums are not reverse mapped, according to

    enum Vehicle {
        Car = 'car',
        Bike = 'bike',
        Truck = 'truck'


        Car: 'car',
        Bike: 'bike',
        Truck: 'truck'

    So you just need to do:

    if (Object.values(Vehicle).includes('car')) {
        // Do stuff here

    If you get an error for: Property 'values' does not exist on type 'ObjectConstructor', then you are not targeting ES2017. You can either use this tsconfig.json config:

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

    Or you can just do an any cast:

    if ((<any>Object).values(Vehicle).includes('car')) {
        // Do stuff here