版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

63 строки
1.6 KiB

  1. import type {
  2. ComponentObjectPropsOptions,
  3. ComputedRef,
  4. DeepReadonly,
  5. ExtractPropTypes,
  6. Ref,
  7. } from 'vue'
  8. export declare type PropRefs<T> = {
  9. [K in keyof T]-?: ComputedRef<DeepReadonly<T[K]>>
  10. }
  11. export declare type NotUndefined<T> = T extends undefined ? never : T
  12. export declare type InferDefault<P, T> = T extends
  13. | null
  14. | number
  15. | string
  16. | boolean
  17. | symbol
  18. | Function
  19. ? T | ((props: P) => T)
  20. : (props: P) => T
  21. export declare type InferDefaults<T> = {
  22. [K in keyof T]?: InferDefault<T, NotUndefined<T[K]>>
  23. }
  24. export declare type PropsWithDefaults<Base, Defaults> = Base & {
  25. [K in keyof Defaults]: K extends keyof Base
  26. ? Defaults[K] extends undefined
  27. ? Base[K]
  28. : NotUndefined<Base[K]>
  29. : never
  30. }
  31. export declare function withDefaults<
  32. PropsWithRefs extends PropRefs<Record<string, any>>,
  33. Defaults extends InferDefaults<Props>,
  34. Props = {
  35. -readonly [K in keyof PropsWithRefs]: PropsWithRefs[K] extends Readonly<
  36. Ref<infer T>
  37. >
  38. ? T
  39. : PropsWithRefs[K]
  40. }
  41. >(props: PropsWithRefs, defaults: Defaults): PropRefs<Props>
  42. export declare function withDefaults<
  43. Props,
  44. Defaults extends InferDefaults<Props>
  45. >(props: Props, defaults: Defaults): PropsWithDefaults<Props, Defaults>
  46. export declare function definePropsRefs<PropNames extends string = string>(
  47. props: PropNames[]
  48. ): PropRefs<{
  49. [key in PropNames]: Ref<any>
  50. }>
  51. export declare function definePropsRefs<
  52. PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions
  53. >(props: PP): PropRefs<ExtractPropTypes<PP>>
  54. export declare function definePropsRefs<TypeProps>(): PropRefs<TypeProps>