From dc7e7dc36ea91e835cceb88ca9f933c4d056359f Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Fri, 20 May 2022 14:12:52 +0100 Subject: [PATCH 1/3] types(VNodeRef): export VNodeRef --- packages/runtime-core/src/index.ts | 2 +- packages/runtime-core/src/vnode.ts | 6 +++++- packages/runtime-dom/types/jsx.d.ts | 7 ++----- test-dts/componentTypeExtensions.test-d.tsx | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index 6e85afe4db5..12a2dee2773 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -86,7 +86,7 @@ export { h } from './h' // Advanced render function utilities export { createVNode, cloneVNode, mergeProps, isVNode } from './vnode' // VNode types -export { Fragment, Text, Comment, Static } from './vnode' +export { Fragment, Text, Comment, Static, VNodeRef } from './vnode' // Built-in components export { Teleport, TeleportProps } from './components/Teleport' export { Suspense, SuspenseProps } from './components/Suspense' diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts index 0a2543a70e7..b2c52ac7e2e 100644 --- a/packages/runtime-core/src/vnode.ts +++ b/packages/runtime-core/src/vnode.ts @@ -43,6 +43,7 @@ import { convertLegacyComponent } from './compat/component' import { convertLegacyVModelProps } from './compat/componentVModel' import { defineLegacyVNodeProperties } from './compat/renderFn' import { callWithAsyncErrorHandling, ErrorCodes } from './errorHandling' +import { ComponentPublicInstance } from './componentPublicInstance' export const Fragment = Symbol(__DEV__ ? 'Fragment' : undefined) as any as { __isFragment: true @@ -68,7 +69,10 @@ export type VNodeTypes = export type VNodeRef = | string | Ref - | ((ref: object | null, refs: Record) => void) + | (( + ref: Element | ComponentPublicInstance | null, + refs: Record + ) => void) export type VNodeNormalizedRefAtom = { i: ComponentInternalInstance diff --git a/packages/runtime-dom/types/jsx.d.ts b/packages/runtime-dom/types/jsx.d.ts index 38a7b5e77fd..c5f2938ff87 100644 --- a/packages/runtime-dom/types/jsx.d.ts +++ b/packages/runtime-dom/types/jsx.d.ts @@ -40,7 +40,7 @@ export interface CSSProperties * For examples and more information, visit: * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors */ - + [v: `--${string}`]: string | number | undefined } @@ -1311,10 +1311,7 @@ import * as RuntimeCore from '@vue/runtime-core' type ReservedProps = { key?: string | number | symbol - ref?: - | string - | RuntimeCore.Ref - | ((ref: Element | RuntimeCore.ComponentPublicInstance | null) => void) + ref?: RuntimeCore.VNodeRef ref_for?: boolean ref_key?: string } diff --git a/test-dts/componentTypeExtensions.test-d.tsx b/test-dts/componentTypeExtensions.test-d.tsx index 32a72f844e6..3ff5b7addb0 100644 --- a/test-dts/componentTypeExtensions.test-d.tsx +++ b/test-dts/componentTypeExtensions.test-d.tsx @@ -44,6 +44,7 @@ export const Custom = defineComponent({ expectType() expectType() expectType() +expectType() // @ts-expect-error expectType() From c34fb2c6596bb712be593aa135c33800fe5c8f71 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Fri, 20 May 2022 14:55:47 +0100 Subject: [PATCH 2/3] chore: add test --- test-dts/defineComponent.test-d.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index 7412d6db36f..f39d4a96daf 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -1156,6 +1156,25 @@ describe('DefineComponent should infer correct types when assigning to Component expectType(component) }) +// #5969 +describe('should allow to assign props', () => { + const Child = defineComponent({ + props: { + bar: String + } + }) + + const Parent = defineComponent({ + props: { + ...Child.props, + foo: String + } + }) + + const child = new Child() + expectType() +}) + // check if defineComponent can be exported export default { // function components From 2fb8cf681f598b8c37b497389cb29bc925ec73d7 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Fri, 20 May 2022 14:58:09 +0100 Subject: [PATCH 3/3] chore: rollback extra space --- packages/runtime-dom/types/jsx.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/runtime-dom/types/jsx.d.ts b/packages/runtime-dom/types/jsx.d.ts index c5f2938ff87..6120f77715a 100644 --- a/packages/runtime-dom/types/jsx.d.ts +++ b/packages/runtime-dom/types/jsx.d.ts @@ -40,7 +40,6 @@ export interface CSSProperties * For examples and more information, visit: * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors */ - [v: `--${string}`]: string | number | undefined }