Browse Source

fix(types): allow using functions on the PropTypes (#9733)

close #9692
dev
Carlos Rodrigues 6 years ago
committed by Evan You
parent
commit
df4af4bd19
  1. 2
      types/options.d.ts
  2. 15
      types/test/options-test.ts

2
types/options.d.ts

@ -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>[];

15
types/test/options-test.ts

@ -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],
@ -84,6 +86,7 @@ Vue.component('union-prop', {
this.cat;
this.complexUnion;
this.kittyUser;
this.callback(true);
this.mixed;
this.object;
this.primitive;
@ -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

Loading…
Cancel
Save