UNPKG

vue

Version:

Reactive, component-oriented view layer for modern web interfaces.

342 lines (319 loc) 8.2 kB
import { Component, AsyncComponent, ComponentOptions, FunctionalComponentOptions, WatchOptionsWithHandler, WatchHandler, DirectiveOptions, DirectiveFunction, RecordPropsDefinition, ThisTypedComponentOptionsWithArrayProps, ThisTypedComponentOptionsWithRecordProps, WatchOptions } from './options' import { VNode, VNodeData, VNodeChildren, NormalizedScopedSlot } from './vnode' import { PluginFunction, PluginObject } from './plugin' export interface CreateElement { ( tag?: | string | Component<any, any, any, any> | AsyncComponent<any, any, any, any> | (() => Component), children?: VNodeChildren ): VNode ( tag?: | string | Component<any, any, any, any> | AsyncComponent<any, any, any, any> | (() => Component), data?: VNodeData, children?: VNodeChildren ): VNode } export interface Vue { readonly $el: Element readonly $options: ComponentOptions<Vue> readonly $parent: Vue readonly $root: Vue readonly $children: Vue[] readonly $refs: { [key: string]: Vue | Element | (Vue | Element)[] | undefined } readonly $slots: { [key: string]: VNode[] | undefined } readonly $scopedSlots: { [key: string]: NormalizedScopedSlot | undefined } readonly $isServer: boolean readonly $data: Record<string, any> readonly $props: Record<string, any> readonly $ssrContext: any readonly $vnode: VNode readonly $attrs: Record<string, string> readonly $listeners: Record<string, Function | Function[]> $mount(elementOrSelector?: Element | string, hydrating?: boolean): this $forceUpdate(): void $destroy(): void $set: typeof Vue.set $delete: typeof Vue.delete $watch( expOrFn: string, callback: (this: this, n: any, o: any) => void, options?: WatchOptions ): () => void $watch<T>( expOrFn: (this: this) => T, callback: (this: this, n: T, o: T) => void, options?: WatchOptions ): () => void $on(event: string | string[], callback: Function): this $once(event: string | string[], callback: Function): this $off(event?: string | string[], callback?: Function): this $emit(event: string, ...args: any[]): this $nextTick(callback: (this: this) => void): void $nextTick(): Promise<void> $createElement: CreateElement } export type CombinedVueInstance< Instance extends Vue, Data, Methods, Computed, Props, SetupBindings > = Data & Methods & Computed & Props & Instance & (SetupBindings extends void ? {} : SetupBindings) export type ExtendedVue< Instance extends Vue, Data, Methods, Computed, Props, SetupBindings > = VueConstructor< CombinedVueInstance<Instance, Data, Methods, Computed, Props, SetupBindings> & Vue > export interface VueConfiguration { silent: boolean optionMergeStrategies: any devtools: boolean productionTip: boolean performance: boolean errorHandler(err: Error, vm: Vue, info: string): void warnHandler(msg: string, vm: Vue, trace: string): void ignoredElements: (string | RegExp)[] keyCodes: { [key: string]: number | number[] } async: boolean } export interface VueConstructor<V extends Vue = Vue> { /** * new with array props */ new < Data = object, Methods = object, Computed = object, PropNames extends string = never, SetupBindings = {} >( options?: ThisTypedComponentOptionsWithArrayProps< V, Data, Methods, Computed, PropNames, SetupBindings > ): CombinedVueInstance< V, Data, Methods, Computed, Record<PropNames, any>, SetupBindings > /** * new with object props * ideally, the return type should just contain Props, * not Record<keyof Props, any>. But TS requires to have Base constructors * with the same return type. */ new < Data = object, Methods = object, Computed = object, Props = object, SetupBindings = {} >( options?: ThisTypedComponentOptionsWithRecordProps< V, Data, Methods, Computed, Props, SetupBindings > ): CombinedVueInstance< V, Data, Methods, Computed, Record<keyof Props, any>, SetupBindings > /** * new with no props */ new (options?: ComponentOptions<V>): CombinedVueInstance< V, object, object, object, Record<keyof object, any>, {} > /** * extend with array props */ extend< Data, Methods, Computed, PropNames extends string = never, SetupBindings = {} >( options?: ThisTypedComponentOptionsWithArrayProps< V, Data, Methods, Computed, PropNames, SetupBindings > ): ExtendedVue< V, Data, Methods, Computed, Record<PropNames, any>, SetupBindings > /** * extend with object props */ extend<Data, Methods, Computed, Props, SetupBindings = {}>( options?: ThisTypedComponentOptionsWithRecordProps< V, Data, Methods, Computed, Props, SetupBindings > ): ExtendedVue<V, Data, Methods, Computed, Props, SetupBindings> /** * extend with functional + array props */ extend<PropNames extends string = never>( definition: FunctionalComponentOptions<Record<PropNames, any>, PropNames[]> ): ExtendedVue<V, {}, {}, {}, Record<PropNames, any>, {}> /** * extend with functional + object props */ extend<Props>( definition: FunctionalComponentOptions<Props, RecordPropsDefinition<Props>> ): ExtendedVue<V, {}, {}, {}, Props, {}> /** * extend with no props */ extend(options?: ComponentOptions<V>): ExtendedVue<V, {}, {}, {}, {}, {}> nextTick<T>(callback: (this: T) => void, context?: T): void nextTick(): Promise<void> set<T>(object: object, key: string | number, value: T): T set<T>(array: T[], key: number, value: T): T delete(object: object, key: string | number): void delete<T>(array: T[], key: number): void directive( id: string, definition?: DirectiveOptions | DirectiveFunction ): DirectiveOptions filter(id: string, definition?: Function): Function component(id: string): VueConstructor component<VC extends VueConstructor>(id: string, constructor: VC): VC component<Data, Methods, Computed, Props, SetupBindings>( id: string, definition: AsyncComponent<Data, Methods, Computed, Props> ): ExtendedVue<V, Data, Methods, Computed, Props, SetupBindings> component< Data, Methods, Computed, PropNames extends string = never, SetupBindings = {} >( id: string, definition?: ThisTypedComponentOptionsWithArrayProps< V, Data, Methods, Computed, PropNames, SetupBindings > ): ExtendedVue< V, Data, Methods, Computed, Record<PropNames, any>, SetupBindings > component<Data, Methods, Computed, Props, SetupBindings>( id: string, definition?: ThisTypedComponentOptionsWithRecordProps< V, Data, Methods, Computed, Props, SetupBindings > ): ExtendedVue<V, Data, Methods, Computed, Props, SetupBindings> component<PropNames extends string>( id: string, definition: FunctionalComponentOptions<Record<PropNames, any>, PropNames[]> ): ExtendedVue<V, {}, {}, {}, Record<PropNames, any>, {}> component<Props>( id: string, definition: FunctionalComponentOptions<Props, RecordPropsDefinition<Props>> ): ExtendedVue<V, {}, {}, {}, Props, {}> component( id: string, definition?: ComponentOptions<V> ): ExtendedVue<V, {}, {}, {}, {}, {}> use<T>( plugin: PluginObject<T> | PluginFunction<T>, options?: T ): VueConstructor<V> use( plugin: PluginObject<any> | PluginFunction<any>, ...options: any[] ): VueConstructor<V> mixin(mixin: VueConstructor | ComponentOptions<Vue>): VueConstructor<V> compile(template: string): { render(createElement: typeof Vue.prototype.$createElement): VNode staticRenderFns: (() => VNode)[] } observable<T>(obj: T): T util: { warn(msg: string, vm?: InstanceType<VueConstructor>): void } config: VueConfiguration version: string } export const Vue: VueConstructor