types(runtime-core): make this void in prop validators and prop default factories (#1867)

This commit is contained in:
Aurelius333 2020-08-18 11:25:55 -04:00 committed by GitHub
parent 9d36c61796
commit a88895b5da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -217,7 +217,7 @@ export type ComponentOptionsWithObjectProps<
EE extends string = string, EE extends string = string,
Props = Readonly<ExtractPropTypes<PropsOptions>> Props = Readonly<ExtractPropTypes<PropsOptions>>
> = ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE> & { > = ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE> & {
props: PropsOptions props: PropsOptions & ThisType<void>
} & ThisType< } & ThisType<
CreateComponentPublicInstance< CreateComponentPublicInstance<
Props, Props,

View File

@ -210,6 +210,27 @@ describe('with object props', () => {
) )
// @ts-expect-error // @ts-expect-error
expectError(<MyComponent b="foo" dd={{ n: 'string' }} ddd={['foo']} />) expectError(<MyComponent b="foo" dd={{ n: 'string' }} ddd={['foo']} />)
// `this` should be void inside of prop validators and prop default factories
defineComponent({
props: {
myProp: {
type: Number,
validator(val: unknown): boolean {
// @ts-expect-error
return val !== this.otherProp
},
default(): number {
// @ts-expect-error
return this.otherProp + 1
}
},
otherProp: {
type: Number,
required: true
}
}
})
}) })
// describe('type inference w/ optional props declaration', () => { // describe('type inference w/ optional props declaration', () => {