JSFiddle - React, Tailwind, and code Playground

JavaScript

function Hamburger(size, stuff, sauce = undefined) {
  if (size == Hamburger.SIZE_SMALL || size == Hamburger.SIZE_LARGE) {
   this.size = size;
  } else if (size == undefined) {
    throw new Error("HamburgerException: no size given");
  } else if (size != Hamburger.SIZE_SMALL || size != Hamburger.SIZE_LARGE) {
    throw new Error("HamburgerException: invalid size " + size.name);
  } 
  
  if (stuff == Hamburger.STUFF_CHEESE || stuff == Hamburger.STUFF_SALAD || stuff == Hamburger.STUFF_POTATO) {
   this.stuff = stuff;
  } else if (stuff == undefined) {
    throw new Error("HamburgerException: no stuff given");
  } else if (stuff != Hamburger.SIZE_SMALL || stuff != Hamburger.SIZE_LARGE) {
    throw new Error("HamburgerException: invalid stuff " + stuff.name);
  } 
  
  if (sauce == Hamburger.SAUCE_SAUCE || sauce == Hamburger.SAUCE_MAYO) {
   this.sauce = sauce;
  }
}

Hamburger.SIZE_SMALL = {name: 'SIZE_SMALL', price: 50, calories: 20};
Hamburger.SIZE_LARGE = {name: 'SIZE_LARGE', price: 100, calories: 40};

Hamburger.STUFF_CHEESE = {name: 'STUFF_CHEESE', price: 10, calories: 20};
Hamburger.STUFF_SALAD = {name: 'STUFF_SALAD', price: 20, calories: 5};
Hamburger.STUFF_POTATO = {name: 'STUFF_POTATO', price: 15, calories: 10};

Hamburger.SAUCE_SAUCE = {name: 'SAUCE_SAUCE', price: 15, calories: 0};
Hamburger.SAUCE_MAYO = {name: 'SAUCE_MAYO', price: 20, calories: 5};

Hamburger.prototype.addSauce = function(sauce) {
  if (this.sauce != sauce ) {
    if (sauce == Hamburger.SAUCE_SAUCE || sauce == Hamburger.SAUCE_MAYO) {
     this.sauce = sauce;
    } else if (sauce != Hamburger.SAUCE_SAUCE || sauce != Hamburger.SAUCE_MAYO) {
      throw new Error("HamburgerException: no sauce given");
    }
  } else {
    throw new Error("HamburgerException: duplicate topping " + sauce.name);
  }
}

Hamburger.prototype.calculatePrice = function() {
    var price = this.size['price'] + this.stuff['price'];
  
  if (this.sauce != undefined) {
    price += this.sauce['price'];
  }
  
 ...