diff --git a/packages/vue-final-modal/src/Component.ts b/packages/vue-final-modal/src/Component.ts index 8b1543c4..bf222233 100644 --- a/packages/vue-final-modal/src/Component.ts +++ b/packages/vue-final-modal/src/Component.ts @@ -3,13 +3,15 @@ * Copy from https://github.com/vuejs/language-tools/tree/master/packages/component-type-helpers */ +import { MaybeRefProps } from '~/utils'; + // export type ComponentType = // T extends new () => {} ? 1 : // T extends (...args: any) => any ? 2 : // 0 export type ComponentProps = -T extends new () => { $props: infer P } ? NonNullable

: +T extends new () => { $props: infer P } ? MaybeRefProps> : T extends (props: infer P, ...args: any) => any ? P : {} diff --git a/packages/vue-final-modal/src/utils.ts b/packages/vue-final-modal/src/utils.ts index 6829ee70..8f340c18 100644 --- a/packages/vue-final-modal/src/utils.ts +++ b/packages/vue-final-modal/src/utils.ts @@ -1,3 +1,5 @@ +import type { Ref } from 'vue' + export const once = (fn: null | ((...args: any[]) => void)) => (...args: any[]) => { @@ -39,3 +41,7 @@ type Entries = { [K in keyof T]: [K, T[K]] }[keyof T][] export function objectEntries>(object: T): Entries { return Object.entries(object) as any } + +export type MaybeRefProps

= { + [K in keyof P]: Ref | P[K]; +}