export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]
type PropConstructor<T = any> =
- | { new (...args: any[]): T & object }
+ | { new (...args: any[]): T & {} }
| { (): T }
| PropMethod<T>
ggg: 'foo' | 'bar'
ffff: (a: number, b: string) => { a: boolean }
validated?: string
+ object?: object
}
describe('defineComponent', () => {
type: String,
// validator requires explicit annotation
validator: (val: unknown) => val !== ''
- }
+ },
+ object: Object as PropType<object>
},
setup(props) {
return {
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)
type: String,
// validator requires explicit annotation
validator: (val: unknown) => val !== ''
- }
+ },
+ object: Object as PropType<object>
},
setup() {
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)