Advertisement
Guest User

buildFromObjectByMapConfig

a guest
Feb 19th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. interface IDate {
  2.     value: string;
  3. }
  4. const data: IDate = { value: '2' };
  5. const sameData = { value: '2' };
  6.  
  7. // function mapObject<K extends string | number, T, U>(obj: Record<K, T>, f: (x: T) => U): Record<K, U>
  8.  
  9. /*
  10. Simpler form of objToObj with strings
  11. */
  12. function extract<
  13.     Obj extends {[key: string]: string}
  14.     >(data: {[key: string]: string}, obj: Obj): Obj {
  15.     const result = Object.assign({}, obj);
  16.     for (let i in obj) {
  17.         if (!obj.hasOwnProperty(i)) {
  18.             continue;
  19.         }
  20.         const key: string = obj[i]; // wtf?!
  21.         const val: string = data[key];
  22.         result[i] = val;
  23.     }
  24.     return result;
  25. }
  26.  
  27.  
  28. function objToObj<
  29.     K extends string, T, Kc extends string
  30.     >(obj: Record<K, T>, conf: Record<Kc, K>): Record<Kc, T> {
  31.     const result: Record<Kc, T> = {} as any;
  32.     for (let i in conf) {
  33.         if (!conf.hasOwnProperty(i)) {
  34.             continue;
  35.         }
  36.         const key: K = conf[i];
  37.         const val: T = obj[key];
  38.         result[i] = val;
  39.     }
  40.     return result;
  41. }
  42.  
  43.  
  44. var a: {value: string} = extract({'owe': 'value-2'}, {value: 'owe'});
  45. var a: { value: string } = extract(data, {value: 'owe'});
  46. var a: { value: string } = extract(sameData, {value: 'owe'});
  47.  
  48. var a: {value: string} = objToObj(data, {value: 'owe'});
  49. var a: {value: string} = objToObj(sameData, {value: 'owe'});
  50. var a: {value: string} = objToObj({'owe': 'value-2'}, {value: 'owe'});
  51. var a /*: { value: string, num: number }*/ = objToObj(
  52.     { 'owe': 'owe-value', 'wow': 1 },
  53.     { value: 'owe', num: 'wow' }
  54. );
  55. var a: { value: string, num: number } = objToObj(
  56.     { 'owe': 'owe-value', 'wow': 1 },
  57.     { value: 'owe', num: 'wow' }
  58. );
  59. var a: { value: string|number, num: string|number } = objToObj(
  60.     { 'owe': 'owe-value', 'wow': 1 },
  61.     { value: 'owe', num: 'wow' }
  62. );
  63. var a: { value: string } = objToObj(
  64.     { 'owe': 'owe-value', 'wow': 1 },
  65.     { value: 'owe', num: 'wow' }
  66. );
  67. var a: { value: string|number } = objToObj(
  68.     { 'owe': 'owe-value', 'wow': 1 },
  69.     { value: 'owe', num: 'wow' }
  70. );
  71.  
  72. console.log(a)
  73. //console.log(data, rapidValidators, a)
  74. document.getElementsByTagName('body')[0].innerText = JSON.stringify(a);
  75.  
  76. //console.log({...data})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement