Skip to content

Commit 7a64b67

Browse files
authored
types(internal): provide internal options for using $el type in language tools (#11814)
1 parent 3c0d531 commit 7a64b67

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

packages-private/dts-test/defineComponent.test-d.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -1822,6 +1822,15 @@ describe('__typeRefs backdoor, object syntax', () => {
18221822
expectType<number>(refs.child.$refs.foo)
18231823
})
18241824

1825+
describe('__typeEl backdoor', () => {
1826+
const Comp = defineComponent({
1827+
__typeEl: {} as HTMLAnchorElement,
1828+
})
1829+
const c = new Comp()
1830+
1831+
expectType<HTMLAnchorElement>(c.$el)
1832+
})
1833+
18251834
defineComponent({
18261835
props: {
18271836
foo: [String, null],

packages/runtime-core/src/apiDefineComponent.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export type DefineComponent<
6868
Provide extends ComponentProvideOptions = ComponentProvideOptions,
6969
MakeDefaultsOptional extends boolean = true,
7070
TypeRefs extends Record<string, unknown> = {},
71+
TypeEl extends Element = any,
7172
> = ComponentPublicInstanceConstructor<
7273
CreateComponentPublicInstanceWithMixins<
7374
Props,
@@ -86,7 +87,8 @@ export type DefineComponent<
8687
LC & GlobalComponents,
8788
Directives & GlobalDirectives,
8889
Exposed,
89-
TypeRefs
90+
TypeRefs,
91+
TypeEl
9092
>
9193
> &
9294
ComponentOptionsBase<
@@ -214,6 +216,7 @@ export function defineComponent<
214216
: { [key in RuntimePropsKeys]?: any }
215217
: TypeProps,
216218
TypeRefs extends Record<string, unknown> = {},
219+
TypeEl extends Element = any,
217220
>(
218221
options: {
219222
props?: (RuntimePropsOptions & ThisType<void>) | RuntimePropsKeys[]
@@ -229,6 +232,10 @@ export function defineComponent<
229232
* @private for language-tools use only
230233
*/
231234
__typeRefs?: TypeRefs
235+
/**
236+
* @private for language-tools use only
237+
*/
238+
__typeEl?: TypeEl
232239
} & ComponentOptionsBase<
233240
ToResolvedProps<InferredProps, ResolvedEmits>,
234241
SetupBindings,
@@ -289,7 +296,8 @@ export function defineComponent<
289296
// MakeDefaultsOptional - if TypeProps is provided, set to false to use
290297
// user props types verbatim
291298
unknown extends TypeProps ? true : false,
292-
TypeRefs
299+
TypeRefs,
300+
TypeEl
293301
>
294302

295303
// implementation, close to no-op

packages/runtime-core/src/componentPublicInstance.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ export type CreateComponentPublicInstanceWithMixins<
233233
Directives extends Record<string, Directive> = {},
234234
Exposed extends string = string,
235235
TypeRefs extends Data = {},
236+
TypeEl extends Element = any,
236237
Provide extends ComponentProvideOptions = ComponentProvideOptions,
237238
// mixin inference
238239
PublicMixin = IntersectionMixin<Mixin> & IntersectionMixin<Extends>,
@@ -277,7 +278,8 @@ export type CreateComponentPublicInstanceWithMixins<
277278
I,
278279
S,
279280
Exposed,
280-
TypeRefs
281+
TypeRefs,
282+
TypeEl
281283
>
282284

283285
export type ExposedKeys<
@@ -302,6 +304,7 @@ export type ComponentPublicInstance<
302304
S extends SlotsType = {},
303305
Exposed extends string = '',
304306
TypeRefs extends Data = {},
307+
TypeEl extends Element = any,
305308
> = {
306309
$: ComponentInternalInstance
307310
$data: D
@@ -315,7 +318,7 @@ export type ComponentPublicInstance<
315318
$parent: ComponentPublicInstance | null
316319
$host: Element | null
317320
$emit: EmitFn<E>
318-
$el: any
321+
$el: TypeEl
319322
$options: Options & MergedComponentOptionsOverride
320323
$forceUpdate: () => void
321324
$nextTick: typeof nextTick

0 commit comments

Comments
 (0)