component.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import type { Config } from '../src/core/config'
  2. import type VNode from '../src/core/vdom/vnode'
  3. import type Watcher from '../src/core/observer/watcher'
  4. declare interface Component {
  5. // constructor information
  6. static cid: number;
  7. static options: Object;
  8. // extend
  9. static extend: (options: Object) => Function;
  10. static superOptions: Object;
  11. static extendOptions: Object;
  12. static super: Class<Component>;
  13. // assets
  14. static directive: (id: string, def?: Function | Object) => Function | Object | void;
  15. static component: (id: string, def?: Class<Component> | Object) => Class<Component>;
  16. static filter: (id: string, def?: Function) => Function | void;
  17. // public properties
  18. $el: any; // so that we can attach __vue__ to it
  19. $data: Object;
  20. $options: ComponentOptions;
  21. $parent: Component | void;
  22. $root: Component;
  23. $children: Array<Component>;
  24. $refs: { [key: string]: Component | Element | Array<Component | Element> | void };
  25. $slots: { [key: string]: Array<VNode> };
  26. $scopedSlots: { [key: string]: () => VNodeChildren };
  27. $vnode: VNode;
  28. $isServer: boolean;
  29. // public methods
  30. $mount: (el?: Element | string, hydrating?: boolean) => Component;
  31. $forceUpdate: () => void;
  32. $destroy: () => void;
  33. $set: (obj: Array<mixed> | Object, key: mixed, val: mixed) => void;
  34. $delete: (obj: Object, key: string) => void;
  35. $watch: (expOrFn: string | Function, cb: Function, options?: Object) => Function;
  36. $on: (event: string, fn: Function) => Component;
  37. $once: (event: string, fn: Function) => Component;
  38. $off: (event?: string, fn?: Function) => Component;
  39. $emit: (event: string, ...args: Array<mixed>) => Component;
  40. $nextTick: (fn: Function) => void;
  41. $createElement: (tag?: string | Component, data?: Object, children?: VNodeChildren) => VNode;
  42. // private properties
  43. _uid: number;
  44. _isVue: true;
  45. _self: Component;
  46. _renderProxy: Component;
  47. _renderContext: ?Component;
  48. _watcher: Watcher;
  49. _watchers: Array<Watcher>;
  50. _data: Object;
  51. _events: Object;
  52. _inactive: boolean;
  53. _isMounted: boolean;
  54. _isDestroyed: boolean;
  55. _isBeingDestroyed: boolean;
  56. _vnode: ?VNode;
  57. _staticTrees: ?Array<VNode>;
  58. _hasHookEvent: boolean;
  59. // private methods
  60. // lifecycle
  61. _init: Function;
  62. _mount: (el?: Element | void, hydrating?: boolean) => Component;
  63. _update: (vnode: VNode, hydrating?: boolean) => void;
  64. _updateFromParent: (
  65. propsData: ?Object,
  66. listeners: ?{ [key: string]: Function | Array<Function> },
  67. parentVnode: VNode,
  68. renderChildren: ?Array<VNode>
  69. ) => void;
  70. // rendering
  71. _render: () => VNode;
  72. __patch__: (a: Element | VNode | void, b: VNode) => any;
  73. // createElement
  74. // _c is internal that accepts `normalizationType` optimization hint
  75. _c: (vnode?: VNode, data?: VNodeData, children?: VNodeChildren, normalizationType?: number) => VNode | void;
  76. // renderStatic
  77. _m: (index: number, isInFor?: boolean) => VNode | VNodeChildren;
  78. // markOnce
  79. _o: (vnode: VNode | Array<VNode>, index: number, key: string) => VNode | VNodeChildren;
  80. // toString
  81. _s: (value: mixed) => string;
  82. // text to VNode
  83. _v: (value: string | number) => VNode;
  84. // toNumber
  85. _n: (value: string) => number | string;
  86. // empty vnode
  87. _e: () => VNode;
  88. // loose equal
  89. _q: (a: mixed, b: mixed) => boolean;
  90. // loose indexOf
  91. _i: (arr: Array<mixed>, val: mixed) => number;
  92. // resolveFilter
  93. _f: (id: string) => Function;
  94. // renderList
  95. _l: (val: mixed, render: Function) => ?Array<VNode>;
  96. // renderSlot
  97. _t: (name: string, fallback: ?Array<VNode>, props: ?Object) => ?Array<VNode>;
  98. // apply v-bind object
  99. _b: (data: any, value: any, asProp?: boolean) => VNodeData;
  100. // check custom keyCode
  101. _k: (eventKeyCode: number, key: string, builtInAlias: number | Array<number> | void) => boolean;
  102. // allow dynamic method registration
  103. [key: string]: any
  104. }