JSFiddle - React, Tailwind, and code Playground

JavaScript

function Compiler(){}

Object.defineProperty( Compiler.prototype, 'options', {
    value: { 'action':0, 'else':0, 'if':0, 'while':0 }
});

Compiler.prototype.detectOperation = function( operation ){
    var keys = [];
    if       ( typeof operation === 'function' ) {
        return 'calculation';
    } else if( typeof operation ===  'object'  ) {
        keys = Object.keys( operation );
        if       ( keys.length === 1 ) {
            if( keys[0] in this.options )
                return keys[0];
        } else if( keys.length === 2 ) {
            keys = keys.sort();
            if( keys[0] === 'else' && keys[1] === 'if' )
                return 'ifelse';
        }
    }
    var error = 'operation{ ' + keys[0];
    for( var i = 1; i < keys.length; ++i )
        error += '-' + keys[i];
    error += ' } is not allowed operation';
    console.log( error );
    throw console.error( error );
}

var comp = new Compiler();
var op = comp.detectOperation( { 'if': 0, 'elue': 2  } );
console.log( 'eo' );
console.log( op );