import { BaseXmlComponent } from "./base"; type AttributeMap = {[P in keyof T]: string}; export abstract class XmlAttributeComponent extends BaseXmlComponent { protected root: T; protected xmlKeys: AttributeMap; constructor(properties: T) { super("_attr"); this.root = properties; } public prepForXml(): {_attr: {[key: string]: (string | number | boolean)}} { const attrs = {}; Object.keys(this.root).forEach((key) => { const value = this.root[key]; if (value !== undefined) { const newKey = this.xmlKeys[key]; attrs[newKey] = value; } }); return {_attr: attrs}; } }