UNPKG

2.32 kBTypeScriptView Raw
1declare module '@ember/object' {
2 import type { ElementDescriptor, ExtendedMethodDecorator } from '@ember/-internals/metal';
3 import type { AnyFn } from '@ember/-internals/utility-types';
4 import CoreObject from '@ember/object/core';
5 import Observable from '@ember/object/observable';
6 export {
7 notifyPropertyChange,
8 defineProperty,
9 get,
10 set,
11 getProperties,
12 setProperties,
13 computed,
14 trySet,
15 } from '@ember/-internals/metal';
16 /**
17 @module @ember/object
18 */
19 /**
20 `EmberObject` is the main base class for all Ember objects. It is a subclass
21 of `CoreObject` with the `Observable` mixin applied. For details,
22 see the documentation for each of these.
23
24 @class EmberObject
25 @extends CoreObject
26 @uses Observable
27 @public
28 */
29 interface EmberObject extends Observable {}
30 const EmberObject_base: Readonly<typeof CoreObject> &
31 (new (owner?: import('@ember/owner').default | undefined) => CoreObject) &
32 import('@ember/object/mixin').default;
33 class EmberObject extends EmberObject_base {
34 get _debugContainerKey(): false | `${string}:${string}`;
35 }
36 export default EmberObject;
37 export function action(
38 target: ElementDescriptor[0],
39 key: ElementDescriptor[1],
40 desc: ElementDescriptor[2]
41 ): PropertyDescriptor;
42 export function action(desc: PropertyDescriptor): ExtendedMethodDecorator;
43 type ObserverDefinition<T extends AnyFn> = {
44 dependentKeys: string[];
45 fn: T;
46 sync: boolean;
47 };
48 /**
49 Specify a method that observes property changes.
50
51 ```javascript
52 import EmberObject from '@ember/object';
53 import { observer } from '@ember/object';
54
55 export default EmberObject.extend({
56 valueObserver: observer('value', function() {
57 // Executes whenever the "value" property changes
58 })
59 });
60 ```
61
62 Also available as `Function.prototype.observes` if prototype extensions are
63 enabled.
64
65 @method observer
66 @for @ember/object
67 @param {String} propertyNames*
68 @param {Function} func
69 @return func
70 @public
71 @static
72 */
73 export function observer<T extends AnyFn>(
74 ...args:
75 | [propertyName: string, ...additionalPropertyNames: string[], func: T]
76 | [ObserverDefinition<T>]
77 ): T;
78}