Skip to content

Commit

Permalink
fix(types): allow using functions on the PropTypes (vuejs#9733)
Browse files Browse the repository at this point in the history
  • Loading branch information
pikax authored and kiku-jw committed Jun 18, 2019
1 parent 4a960fd commit 6dc55d0
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion types/options.d.ts
Expand Up @@ -144,7 +144,7 @@ export interface RenderContext<Props=DefaultProps> {
injections: any
}

export type Prop<T> = { (): T } | { new(...args: any[]): T & object }
export type Prop<T> = { (): T } | { new(...args: any[]): T & object } | { new(...args: string[]): Function }

export type PropType<T> = Prop<T> | Prop<T>[];

Expand Down
15 changes: 15 additions & 0 deletions types/test/options-test.ts
Expand Up @@ -68,12 +68,14 @@ interface ICat {
foo: any,
bar: object
}
type ConfirmCallback = (confirm: boolean) => void;

Vue.component('union-prop', {
props: {
cat: Object as PropType<ICat>,
complexUnion: { type: [User, Number] as PropType<User | number> },
kittyUser: Object as PropType<ICat & IUser>,
callback: Function as PropType<ConfirmCallback>,
mixed: [RegExp, Array],
object: [Cat, User],
primitive: [String, Number],
Expand All @@ -84,6 +86,7 @@ Vue.component('union-prop', {
this.cat;
this.complexUnion;
this.kittyUser;
this.callback(true);
this.mixed;
this.object;
this.primitive;
Expand Down Expand Up @@ -281,6 +284,18 @@ Vue.component('component', {
delimiters: ["${", "}"]
});


Vue.component('custom-prop-type-function', {
props: {
callback: Function as PropType<(confirm: boolean) => void>,
},
methods: {
confirm(){
this.callback(true);
}
}
});

Vue.component('provide-inject', {
provide: {
foo: 1
Expand Down

0 comments on commit 6dc55d0

Please sign in to comment.