types: support object as props type (#3165)

This commit is contained in:
HcySunYang 2021-02-25 05:20:41 +08:00 committed by GitHub
parent 354966204e
commit 4a965802e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -56,7 +56,7 @@ interface PropOptions<T = any, D = T> {
export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]
type PropConstructor<T = any> =
| { new (...args: any[]): T & object }
| { new (...args: any[]): T & {} }
| { (): T }
| PropMethod<T>

View File

@ -39,6 +39,7 @@ describe('object props', () => {
ggg: 'foo' | 'bar'
ffff: (a: number, b: string) => { a: boolean }
validated?: string
object?: object
}
describe('defineComponent', () => {
@ -106,7 +107,8 @@ describe('object props', () => {
type: String,
// validator requires explicit annotation
validator: (val: unknown) => val !== ''
}
},
object: Object as PropType<object>
},
setup(props) {
return {
@ -140,6 +142,7 @@ describe('object props', () => {
expectType<ExpectedProps['ggg']>(props.ggg)
expectType<ExpectedProps['ffff']>(props.ffff)
expectType<ExpectedProps['validated']>(props.validated)
expectType<ExpectedProps['object']>(props.object)
// raw bindings
expectType<Number>(rawBindings.setupA)
@ -263,7 +266,8 @@ describe('object props', () => {
type: String,
// validator requires explicit annotation
validator: (val: unknown) => val !== ''
}
},
object: Object as PropType<object>
},
setup() {
@ -293,6 +297,7 @@ describe('object props', () => {
expectType<ExpectedProps['ggg']>(props.ggg)
// expectType<ExpectedProps['ffff']>(props.ffff) // todo fix
expectType<ExpectedProps['validated']>(props.validated)
expectType<ExpectedProps['object']>(props.object)
// rawBindings
expectType<Number>(rawBindings.setupA)