UNPKG

@dareharu/utilities

Version:
34 lines (32 loc) 1.14 kB
/** * Creates a new object that assigned each value of the given array into property key and value. * * @param {string[]} keys The array to assign each value into property key and value * @since 0.1.0 * @example * ```typescript * const ChatInputId = keyMirror(['Ticket', 'Message']); * * assert.equal(ChatInputId.Ticket, 'Ticket'); * assert.equal(ChatInputId.Message, 'Message'); * ``` * @example * ```typescript * const PropertyId = { * ...keyMirror(['Create', 'Delete'], 'Ticket'), * ...keyMirror(['Send', 'Receive'], 'Message') * }; * * assert.equal(PropertyId.TicketCreate, 'TicketCreate'); * assert.equal(PropertyId.TicketDelete, 'TicketDelete'); * assert.equal(PropertyId.MessageSend, 'MessageSend'); * assert.equal(PropertyId.MessageReceive, 'MessageReceive'); * ``` */ declare function keyMirror<T extends ReadonlyArray<string>, Prefix extends string = '', Suffix extends string = ''>(keys: Readonly<T> | [...T], { prefix, suffix }?: Partial<{ prefix: Prefix; suffix: Suffix; }>): Readonly<{ [P in T[number] as `${Prefix}${P}${Suffix}`]: `${Prefix}${P}${Suffix}`; }>; export { keyMirror };