diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index ea53f96a..1a22c50f 100644 --- a/packages/runtime-core/src/apiDefineComponent.ts +++ b/packages/runtime-core/src/apiDefineComponent.ts @@ -7,7 +7,12 @@ import { ComponentOptionsMixin, RenderFunction } from './componentOptions' -import { SetupContext, FunctionalComponent } from './component' +import { + SetupContext, + FunctionalComponent, + AllowedComponentProps, + ComponentCustomProps +} from './component' import { CreateComponentPublicInstance, ComponentPublicInstanceConstructor @@ -15,11 +20,7 @@ import { import { ExtractPropTypes, ComponentPropsOptions } from './componentProps' import { EmitsOptions } from './componentEmits' import { isFunction } from '@vue/shared' -import { - VNodeProps, - AllowedComponentProps, - ComponentCustomProps -} from './vnode' +import { VNodeProps } from './vnode' // defineComponent is a utility that is primarily used for type inference // when declaring components. Type inference is provided in the component diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index 621d8ae6..f34031d7 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -53,6 +53,19 @@ import { componentAdded } from './devtools' export type Data = Record +/** + * For extending allowed non-declared props on components in TSX + */ +export interface ComponentCustomProps {} + +/** + * Default allowed non-declared props on ocmponent in TSX + */ +export interface AllowedComponentProps { + class?: unknown + style?: unknown +} + // Note: can't mark this whole interface internal because some public interfaces // extend it. export interface ComponentInternalOptions { diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index 39de3cca..757a2138 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -54,7 +54,7 @@ export { h } from './h' // Advanced render function utilities export { createVNode, cloneVNode, mergeProps, isVNode } from './vnode' // VNode types -export { Fragment, Text, Comment, Static, ComponentCustomProps } from './vnode' +export { Fragment, Text, Comment, Static } from './vnode' // Built-in components export { Teleport, TeleportProps } from './components/Teleport' export { Suspense, SuspenseProps } from './components/Suspense' @@ -159,7 +159,9 @@ export { Component, FunctionalComponent, ComponentInternalInstance, - SetupContext + SetupContext, + ComponentCustomProps, + AllowedComponentProps } from './component' export { ComponentOptions, diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts index f477933a..5cde39f8 100644 --- a/packages/runtime-core/src/vnode.ts +++ b/packages/runtime-core/src/vnode.ts @@ -71,12 +71,6 @@ export type VNodeHook = | VNodeMountHook[] | VNodeUpdateHook[] -export interface ComponentCustomProps {} -export interface AllowedComponentProps { - class?: unknown - style?: unknown -} - // https://github.com/microsoft/TypeScript/issues/33099 export type VNodeProps = { key?: string | number