JSFiddle - React, Tailwind, and code Playground

by emilrmoeller

JavaScript

const data = {
  title: 'hello world',
  endTime: 123456,
  foo: [1, 2, 3]
};

const properties = {
  title: 'string',
  endTime: 'number',
  foo: 'array'
};

const hasPropTypes = (obj, expected) => {
  if (typeof obj !== 'object' || obj === null) {
    return false;
  };
   
  return Object.keys(obj).every(key => {
    if (!expected.hasOwnProperty(key)) {
    	return false;
    }

    switch (expected[key]) {
    	case 'array':
      	return Array.isArray(obj[key]);
        break;

      default:
      	return typeof obj[key] === expected[key]
    }
  });
};

console.log(hasPropTypes(data, properties));