22 *
33 */
44class Model {
5+
56 /**
67 * @return {{} };
78 */
@@ -11,66 +12,10 @@ class Model {
1112
1213 /**
1314 * @param data {{}}
14- * @return {model }
1515 */
1616 mapResponse ( data ) {
17- return this . initializeObjectFromApi ( data , this ) ;
18- }
19-
20- /**
21- * @private
22- * @param data
23- * @param assignable
24- * @return {model }
25- */
26- initializeObjectFromApi ( data , assignable ) {
27- Object . keys ( assignable )
28- . forEach ( key => {
29- const value = assignable [ key ] ;
30- const type = typeof value ;
31-
32- if ( typeof data [ key ] === type ) {
33- assignable [ key ] = data [ key ] ;
34- return ;
35- }
36-
37- const defaultValue = this . getDefaultValueFromType ( type , value ) ;
38-
39- assignable [ key ] = data [ key ] || defaultValue ;
40- } ) ;
41-
42- Object . keys ( data )
43- . forEach ( key => {
44- if ( typeof assignable [ key ] === 'undefined' ) {
45- assignable [ key ] = data [ key ] ;
46- }
47- } ) ;
48-
49- return assignable ;
50- }
51-
52- /**
53- * @private
54- * @param type
55- * @param defaultModelValue
56- * @return {* }
57- */
58- getDefaultValueFromType ( type , defaultModelValue ) {
59- let defaultValue ;
60-
61- if ( type === 'string' ) {
62- defaultValue = defaultModelValue || '' ;
63- } else if ( type === 'boolean' ) {
64- defaultValue = defaultModelValue || false ;
65- } else if ( type === 'number' ) {
66- defaultValue = defaultModelValue || 0 ;
67- } else if ( Array . isArray ( defaultModelValue ) ) {
68- defaultValue = defaultModelValue || [ ] ;
69- } else {
70- defaultValue = defaultModelValue || null ;
71- }
72-
73- return defaultValue ;
17+ throw new Error ( `${ this . constructor . name } ::mapResponse unset, keys: ${ Object . keys ( data )
18+ . join ( ', ' ) } `) ;
7419 }
7520}
7621
0 commit comments