Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Mutator

Mutators are a way to define "mutation decorators" which in some way change the value of the elements they are applied to, as opposed to "annotation decorators", which primarily attach metadata.

Create a mutator with Mutator.create().

Hierarchy

  • Mutator

Index

Methods

Methods

Static create

Static define

  • Define a new mutation decorator (mutator). This should be called and returned from a function definition. For example:

    function Name() {
    return Mutator.define({
    invoke(site) {
    // ...
    }
    })
    }

    The invoke() function takes a DecoratorSite object which describes the particular invocation that is being run, and importantly, access to the property descriptor for the property being defined. If you wish to completely replace (or wrap) the default value of the property or method you are replacing, set the value property of the property descriptor with site.propertyDescriptor.value

    For example:

    export function RunTwice() {
    return Mutator.create(
    site => {
    let prop = site.propertyDescriptor;
    let original = prop.value;
    let replacement = function(...args) {
    original.apply(this, args);
    original.apply(this, args);
    }
    prop.value = replacement;
    }
    )

    Parameters

    Returns (target: any, ...args: any[]) => void

      • (target: any, ...args: any[]): void
      • Parameters

        • target: any
        • Rest ...args: any[]

        Returns void

Generated using TypeDoc