Advertisement
n128

class Model

Jun 22nd, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Model {
  2.     #object
  3.    
  4.     constructor(object = {}) {
  5.         this.#object = object;
  6.        
  7.         let keys = Object.keys(this.#object),
  8.             types = []
  9.         for (let i in this.#object) {
  10.             types.push(typeof this.#object[i])
  11.         }
  12.        
  13.         return function (data) {
  14.             if (typeof data !== 'object') throw "DATA REQUIRED A OBJECT!"
  15.             let dataKeys = Object.keys(data)
  16.             for (let i = 0, l = keys.length; i < keys.length; i++) {
  17.                 // Validating the keys
  18.                 if (dataKeys[i] !== keys[i]) return new Error("INVALID KEY! '" + dataKeys[i] + "'")
  19.                 // Validating data types
  20.                 if (typeof data[keys[i]] !== types[i]) return new Error("INVALID TYPE ASSIGNATION! " + keys[i] + " is not a " + types[i])
  21.                 // Setting in 'this'
  22.                 this[dataKeys[i]] = data[dataKeys[i]]
  23.             }
  24.            
  25.             return this;
  26.         };
  27.     }
  28. }
  29.  
  30. const User = new Model({
  31.     name: String(),
  32.     age: Number(),
  33.     confirmed: Boolean()
  34. })
  35.  
  36. let user = new User({name: 'Nico', age: 15, confirmed: false})
  37.  
  38. console.log(user)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement