• binds a class-prototype-method func (by reference) to the passed object self (which should be an instance of the class), and returns that bound method.

    Type Parameters

    • S
    • A extends any[]
    • B extends any[]
    • R

    Parameters

    • self: S

      the object to bind the method func to

    • func: BindableFunction<S, A, B, R>

      the prototype-method to bind (by reference)

    • Rest ...args: A

      partial tuple of the first few arguments that should be passed in by default

    Returns ((...args) => R)

    a version of the function func that is now bound to the object self, with the default first few partial arguments args

      • (...args): R
      • Parameters

        • Rest ...args: B

        Returns R

    Example

    type ID = number
    const graph_edges = new Map<ID, Set<ID>>()
    const set_graph_edge = bindMethodToSelf(graph_edges, graph_edges.set) // automatic type inference will correctly assign it the type: `(key: number, value: Set<number>) => Map<number, Set<number>>`
    const edges: [ID, ID[]][] = [[1, [1,2,3]], [2, [3,5]], [3, [4, 7]], [4, [4,5]], [5, [7]]]
    for (const [id, adjacent_ids] of edges) { set_graph_edge(id, new Set(adjacent_ids)) }

    example with assigned default arguments

    const queue = [1, 2, 3, 4, 5, 6, 9, 9, 9]
    const release_from_queue = bindMethodToSelf(queue, queue.splice, 0) // automatic type inference will correctly assign it the type: `(deleteCount: number, ...items: number[]) => number[]`
    while (queue.length > 0) { console.log(release_from_queue(3)) }
    // will print "[1, 2, 3]", then "[4, 5, 6]", then "[9, 9, 9]"

Generated using TypeDoc