define-accessors
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

define-accessors

define accessors for an object on another object

🔧 Install · 🧩 Example · 📜 API docs · 🔥 Releases · 💪🏼 Contribute · 🖐️ Help


Install

$ npm i define-accessors

API

Table of Contents

defineAccessors

src/index.ts:59-72

Defines accessors for a source object on a target object.

Example; all values reflected on source:

const target = {}
const source = {
  foo: 'a prop',
  bar: 'another',
  zoo: 10,
}
const typed = defineAccessors(target, source)
expect(typed).toBe(target)
expect(typed.foo).toBe(source.foo)
expect(typed.bar).toBe(source.bar)
expect(typed.zoo).toBe(source.zoo)

typed.foo = 'something else'
expect(typed.foo).toEqual('something else')
expect(source.foo).toEqual('something else')

Example; all values reflected on other using a custom property descriptor factory:

const target = {}
const source = {
  foo: 'a prop',
}
const other: Record<string, unknown> = {
  foo: 'something else',
}
const typed = defineAccessors(target, source, (key: string) => ({
  enumerable: true,
  get() {
    return other[key]
  },
  set(value: never) {
    other[key] = value
  },
}))
expect(typed).toBe(target)
expect(typed.foo).toBe(other.foo)

Parameters

  • target T The target object to define accessors on
  • source S The source object where the actual values are
  • propertyDescriptorFactory function (key: any, source: S): PropertyDescriptor A function that returns a custom property descriptor for the given key (optional, default createPropertyDescriptor)

Returns any The target object but with its type intersected with the source's type

Contribute

Fork or edit and submit a PR.

All contributions are welcome!

License

MIT © 2021 stagas

Package Sidebar

Install

npm i define-accessors

Weekly Downloads

26

Version

1.1.1

License

MIT

Unpacked Size

18.6 kB

Total Files

9

Last publish

Collaborators

  • stagas