-import { isArray, isPromise, isFunction } from '@vue/shared'
+import { isArray, isPromise, isFunction, Prettify } from '@vue/shared'
import {
getCurrentInstance,
setCurrentInstance,
// overload 1: runtime props w/ array
export function defineProps<PropNames extends string = string>(
props: PropNames[]
-): Readonly<{ [key in PropNames]?: any }>
+): Prettify<Readonly<{ [key in PropNames]?: any }>>
// overload 2: runtime props w/ object
export function defineProps<
PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions
->(props: PP): Readonly<ExtractPropTypes<PP>>
+>(props: PP): Prettify<Readonly<ExtractPropTypes<PP>>>
// overload 3: typed-based declaration
-export function defineProps<TypeProps>(): Readonly<
- Omit<TypeProps, BooleanKey<TypeProps>> & {
- [K in keyof Pick<TypeProps, BooleanKey<TypeProps>>]-?: NotUndefined<
- TypeProps[K]
- >
- }
+export function defineProps<TypeProps>(): Prettify<
+ Readonly<
+ Omit<TypeProps, BooleanKey<TypeProps>> & {
+ [K in keyof Pick<TypeProps, BooleanKey<TypeProps>>]-?: NotUndefined<
+ TypeProps[K]
+ >
+ }
+ >
>
// implementation
export function defineProps() {
isArray,
NOOP,
isPromise,
- LooseRequired
+ LooseRequired,
+ Prettify
} from '@vue/shared'
import { isRef, Ref } from '@vue/reactivity'
import { computed } from './apiComputed'
ComponentCustomOptions {
setup?: (
this: void,
- props: Readonly<
- LooseRequired<
- Props &
+ props: LooseRequired<
+ Props &
+ Prettify<
UnwrapMixinsType<
IntersectionMixin<Mixin> & IntersectionMixin<Extends>,
'P'
>
- >
+ >
>,
ctx: SetupContext<E>
) => Promise<RawBindings> | RawBindings | RenderFunction | void
EE extends string = string,
I extends ComponentInjectOptions = {},
II extends string = string,
- Props = Readonly<{ [key in PropNames]?: any }> & EmitsToProps<E>
+ Props = Prettify<Readonly<{ [key in PropNames]?: any } & EmitsToProps<E>>>
> = ComponentOptionsBase<
Props,
RawBindings,
EE extends string = string,
I extends ComponentInjectOptions = {},
II extends string = string,
- Props = Readonly<ExtractPropTypes<PropsOptions>> & EmitsToProps<E>,
+ Props = Prettify<Readonly<ExtractPropTypes<PropsOptions> & EmitsToProps<E>>>,
Defaults = ExtractDefaultPropTypes<PropsOptions>
> = ComponentOptionsBase<
Props,
extend,
isString,
isFunction,
- UnionToIntersection
+ UnionToIntersection,
+ Prettify
} from '@vue/shared'
import {
toRaw,
> = {
$: ComponentInternalInstance
$data: D
- $props: MakeDefaultsOptional extends true
- ? Partial<Defaults> & Omit<P & PublicProps, keyof Defaults>
- : P & PublicProps
+ $props: Prettify<
+ MakeDefaultsOptional extends true
+ ? Partial<Defaults> & Omit<P & PublicProps, keyof Defaults>
+ : P & PublicProps
+ >
$attrs: Data
$refs: Data
$slots: Slots
+export type Prettify<T> = { [K in keyof T]: T[K] } & {}
+
export type UnionToIntersection<U> = (
U extends any ? (k: U) => void : never
) extends (k: infer I) => void