v3-define-component.d.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { ComponentPropsOptions } from './v3-component-props'
  2. import {
  3. MethodOptions,
  4. ComputedOptions,
  5. ComponentOptionsWithoutProps,
  6. ComponentOptionsWithArrayProps,
  7. ComponentOptionsWithProps
  8. } from './v3-component-options'
  9. import { VueProxy } from './v3-component-proxy'
  10. import { Data, HasDefined } from './common'
  11. import { EmitsOptions } from './v3-setup-context'
  12. /**
  13. * overload 1: object format with no props
  14. */
  15. export function defineComponent<
  16. RawBindings,
  17. D = Data,
  18. C extends ComputedOptions = {},
  19. M extends MethodOptions = {},
  20. Mixin = {},
  21. Extends = {},
  22. Emits extends EmitsOptions = {},
  23. EmitsNames extends string = string
  24. >(
  25. options: ComponentOptionsWithoutProps<
  26. {},
  27. RawBindings,
  28. D,
  29. C,
  30. M,
  31. Mixin,
  32. Extends,
  33. Emits,
  34. EmitsNames
  35. >
  36. ): VueProxy<{}, RawBindings, D, C, M, Mixin, Extends, Emits>
  37. /**
  38. * overload 2: object format with array props declaration
  39. * props inferred as `{ [key in PropNames]?: any }`
  40. *
  41. * return type is for Vetur and TSX support
  42. */
  43. export function defineComponent<
  44. PropNames extends string,
  45. RawBindings = Data,
  46. D = Data,
  47. C extends ComputedOptions = {},
  48. M extends MethodOptions = {},
  49. Mixin = {},
  50. Extends = {},
  51. Emits extends EmitsOptions = {},
  52. EmitsNames extends string = string,
  53. PropsOptions extends ComponentPropsOptions = ComponentPropsOptions
  54. >(
  55. options: ComponentOptionsWithArrayProps<
  56. PropNames,
  57. RawBindings,
  58. D,
  59. C,
  60. M,
  61. Mixin,
  62. Extends,
  63. Emits,
  64. EmitsNames
  65. >
  66. ): VueProxy<
  67. Readonly<{ [key in PropNames]?: any }>,
  68. RawBindings,
  69. D,
  70. C,
  71. M,
  72. Mixin,
  73. Extends,
  74. Emits
  75. >
  76. /**
  77. * overload 3: object format with object props declaration
  78. *
  79. * see `ExtractPropTypes` in './componentProps.ts'
  80. */
  81. export function defineComponent<
  82. Props,
  83. RawBindings = Data,
  84. D = Data,
  85. C extends ComputedOptions = {},
  86. M extends MethodOptions = {},
  87. Mixin = {},
  88. Extends = {},
  89. Emits extends EmitsOptions = {},
  90. EmitsNames extends string = string,
  91. PropsOptions extends ComponentPropsOptions = ComponentPropsOptions
  92. >(
  93. options: HasDefined<Props> extends true
  94. ? ComponentOptionsWithProps<
  95. PropsOptions,
  96. RawBindings,
  97. D,
  98. C,
  99. M,
  100. Mixin,
  101. Extends,
  102. Emits,
  103. EmitsNames,
  104. Props
  105. >
  106. : ComponentOptionsWithProps<
  107. PropsOptions,
  108. RawBindings,
  109. D,
  110. C,
  111. M,
  112. Mixin,
  113. Extends,
  114. Emits,
  115. EmitsNames
  116. >
  117. ): VueProxy<PropsOptions, RawBindings, D, C, M, Mixin, Extends, Emits>