angular - Reading property names from a class in TypeScript? -


having class (e.g. wikipediasearchresult) few properties in typescript, possible access them? maybe question bit naive, i'm wondering if write following code without duplicated property names:

function mergeto(from:any, to:any={}, properties:array<string>=[]) {   if (!!from) {     (var property of properties) {       // no deep copy here ;-)       to[property] = from[property];     }   } }  class wikipediasearchresult /* implements iwikipediasearchresult */ {    lang:string;   summary:string;   title:string;   wikipediaurl:string;    constructor(obj?:any) {      mergeto(obj, this, [       // --> how avoid list? <--       'lang', 'summary', 'title', 'wikipediaurl'     ]);    }  }  var result = new wikipediasearchresult({   title: 'zürich',    wikipediaurl: 'https://en.wikipedia.org/wiki/z%c3%bcrich' });  console.log(result); 

of course there 3rd party libraries such underscore.js, differs e.g. _.clone(...) since want clone specific properties , ignoring other properties may provided obj respectively from.

another way might using e.g. _.create(wikipediasearchresult.prototype, { title: 'zürich' }), haven't tried yet use javascript prototype property. great use typescript internal mechanism.

an idea came create "dummy" instance , reading key. i'm wondering if comes better variant?

you can apply each of copiable properties custom decorator:

  @copiable   lang:string; 

then inside @copiable decorator function store target property name in static collection.

function copiable(target: any, key: string)  {     copiableproperties.push(key);  } 

then later in mergeto method able iterate on copiable property names stored in copiableproperties.

it might bit overkill allow avoid duplicates. hope helps.


Comments

Popular posts from this blog

Receive udp packets in android gstreamer -

php - Extract Text from HTTP referer -

matplotlib - PYTHON: Annotate boxes disapear dependant on range -