Skip to content

Commit

Permalink
fix(types): support chain call for Vue.use and Vue.mixin (vuejs#8595)
Browse files Browse the repository at this point in the history
  • Loading branch information
lzxb authored and aJean committed Aug 19, 2020
1 parent 7418ec5 commit 613c78d
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 5 deletions.
4 changes: 2 additions & 2 deletions flow/global-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ declare interface GlobalAPI {
set: <T>(target: Object | Array<T>, key: string | number, value: T) => T;
delete: <T>(target: Object| Array<T>, key: string | number) => void;
nextTick: (fn: Function, context?: Object) => void | Promise<*>;
use: (plugin: Function | Object) => void;
mixin: (mixin: Object) => void;
use: (plugin: Function | Object) => GlobalAPI;
mixin: (mixin: Object) => GlobalAPI;
compile: (template: string) => { render: Function, staticRenderFns: Array<Function> };

directive: (id: string, def?: Function | Object) => Function | Object | void;
Expand Down
5 changes: 5 additions & 0 deletions test/unit/features/global-api/mixin.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,9 @@ describe('Global API: mixin', () => {
expect(base).toHaveBeenCalled()
expect(injected).toHaveBeenCalled()
})

// #8595
it('chain call', () => {
expect(Vue.mixin({})).toBe(Vue)
})
})
5 changes: 5 additions & 0 deletions test/unit/features/global-api/use.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,9 @@ describe('Global API: use', () => {
expect(Vue.options.directives['plugin-test']).toBeUndefined()
expect(Ctor2.options.directives['plugin-test']).toBe(def)
})

// #8595
it('chain call', () => {
expect(Vue.use(() => {})).toBe(Vue)
})
})
9 changes: 9 additions & 0 deletions types/test/vue-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,15 @@ class Test extends Vue {
this.use;
this.mixin(Test);
this.compile("<div>{{ message }}</div>");
this
.use(() => {

})
.use(() => {

})
.mixin({})
.mixin({});
}
}

Expand Down
6 changes: 3 additions & 3 deletions types/vue.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ export interface VueConstructor<V extends Vue = Vue> {
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): void;
use(plugin: PluginObject<any> | PluginFunction<any>, ...options: any[]): void;
mixin(mixin: VueConstructor | ComponentOptions<Vue>): void;
use<T>(plugin: PluginObject<T> | PluginFunction<T>, options?: T): this;
use(plugin: PluginObject<any> | PluginFunction<any>, ...options: any[]): this;
mixin(mixin: VueConstructor | ComponentOptions<Vue>): this;
compile(template: string): {
render(createElement: typeof Vue.prototype.$createElement): VNode;
staticRenderFns: (() => VNode)[];
Expand Down

0 comments on commit 613c78d

Please sign in to comment.