Multilink¶
Under Construction
This documentation is auto-generated, and is a work in progress. Please see the source code at https://github.com/phetsims/axon/blob/main/js/Multilink.ts for the most up-to-date information.
Overview¶
Multilink is used to link to multiple properties. It is very similar to a DerivedProperty, but has no value and does not conform to the Property API because it is intended for use with callbacks that do not compute a value.
For situations where a reference to the Multilink instance is not needed (for calling dispose), use convenience methods Multilink.multilink or Property.lazyLink to avoid these types of lint errors:
// lint error: Do not use 'new' for side effects (no-new) new Multilink( ... );
// lint error: 'multilink' is assigned a value but never used (no-unused-vars) const multilink = new Multilink( ... );
@author Sam Reid (PhET Interactive Simulations)
Class Multilink¶
Constructor¶
new Multilink( dependencies : RP1<T1>, callback : ( ...params: [ T1 ] ) => void, lazy? : boolean )¶
Instance Methods¶
dispose()¶
Static Methods¶
multilink( dependencies : RP1<T1>, callback : ( ...params: [ T1 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
Registers a listener with multiple properties, then notifies the listener immediately. @param dependencies @param callback function that takes values from the properties and returns nothing
multilink( dependencies : RP2<T1, T2>, callback : ( ...params: [ T1, T2 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP3<T1, T2, T3>, callback : ( ...params: [ T1, T2, T3 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP4<T1, T2, T3, T4>, callback : ( ...params: [ T1, T2, T3, T4 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP5<T1, T2, T3, T4, T5>, callback : ( ...params: [ T1, T2, T3, T4, T5 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP6<T1, T2, T3, T4, T5, T6>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP7<T1, T2, T3, T4, T5, T6, T7>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP8<T1, T2, T3, T4, T5, T6, T7, T8>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP9<T1, T2, T3, T4, T5, T6, T7, T8, T9>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : RP15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilink( dependencies : DependenciesType<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
multilinkAny( dependencies : Readonly<TReadOnlyProperty<unknown>[]>, callback : () => void ) : UnknownMultilink¶
Create a Multilink from a dynamic or unknown number of dependencies.
lazyMultilink( dependencies : RP1<T1>, callback : ( ...params: [ T1 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
Registers a listener with multiple properties without an immediate callback with current values. @param dependencies @param callback function that takes values from the properties and returns nothing
lazyMultilink( dependencies : RP2<T1, T2>, callback : ( ...params: [ T1, T2 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP3<T1, T2, T3>, callback : ( ...params: [ T1, T2, T3 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP4<T1, T2, T3, T4>, callback : ( ...params: [ T1, T2, T3, T4 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP5<T1, T2, T3, T4, T5>, callback : ( ...params: [ T1, T2, T3, T4, T5 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP6<T1, T2, T3, T4, T5, T6>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP7<T1, T2, T3, T4, T5, T6, T7>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP8<T1, T2, T3, T4, T5, T6, T7, T8>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP9<T1, T2, T3, T4, T5, T6, T7, T8, T9>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : RP15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilink( dependencies : DependenciesType<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, callback : ( ...params: [ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ] ) => void ) : Multilink<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>¶
lazyMultilinkAny( dependencies : Readonly<TReadOnlyProperty<unknown>[]>, callback : () => void ) : UnknownMultilink¶
Create a lazy Multilink from a dynamic or unknown number of dependencies.
unmultilink( multilink : UnknownMultilink )¶
Unlinks a listener that was added with multilink or lazyMultilink.
Type DependenciesType¶
RP1<T1> | RP2<T1, T2> | RP3<T1, T2, T3> | RP4<T1, T2, T3, T4> | RP5<T1, T2, T3, T4, T5> | RP6<T1, T2, T3, T4, T5, T6> | RP7<T1, T2, T3, T4, T5, T6, T7> | RP8<T1, T2, T3, T4, T5, T6, T7, T8> | RP9<T1, T2, T3, T4, T5, T6, T7, T8, T9> | RP10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> | RP11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> | RP12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> | RP13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> | RP14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> | RP15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
Type RP1¶
Exported for the convenience usage sites in Multilink.multilink
Readonly<[ ROP<T1> ]>
Type RP10¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10> ]>
Type RP11¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10>, ROP<T11> ]>
Type RP12¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10>, ROP<T11>, ROP<T12> ]>
Type RP13¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10>, ROP<T11>, ROP<T12>, ROP<T13> ]>
Type RP14¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10>, ROP<T11>, ROP<T12>, ROP<T13>, ROP<T14> ]>
Type RP15¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9>, ROP<T10>, ROP<T11>, ROP<T12>, ROP<T13>, ROP<T14>, ROP<T15> ]>
Type RP2¶
Readonly<[ ROP<T1>, ROP<T2> ]>
Type RP3¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3> ]>
Type RP4¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4> ]>
Type RP5¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5> ]>
Type RP6¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6> ]>
Type RP7¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7> ]>
Type RP8¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8> ]>
Type RP9¶
Readonly<[ ROP<T1>, ROP<T2>, ROP<T3>, ROP<T4>, ROP<T5>, ROP<T6>, ROP<T7>, ROP<T8>, ROP<T9> ]>
Type UnknownMultilink¶
Marker-like interface for use with Multilink.unmultilink. This provides type safety to make sure unmultilink is called with a type-safe argument.
Multilink<unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown>
Source Code¶
See the source for Multilink.ts in the axon repository.