Skip to content

Commit 57bdaa2

Browse files
authored
fix(types): component instance inference without props (#2145)
1 parent 1c9a0b3 commit 57bdaa2

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

packages/runtime-core/src/apiDefineComponent.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ export function defineComponent<
9494
Props = {},
9595
RawBindings = {},
9696
D = {},
97-
C extends ComputedOptions = ComputedOptions,
98-
M extends MethodOptions = MethodOptions,
97+
C extends ComputedOptions = {},
98+
M extends MethodOptions = {},
9999
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
100100
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
101101
E extends EmitsOptions = EmitsOptions,

packages/runtime-core/src/componentOptions.ts

+3-16
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,7 @@ export type ComponentOptionsWithoutProps<
166166
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
167167
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
168168
E extends EmitsOptions = EmitsOptions,
169-
EE extends string = string,
170-
Defaults = {}
169+
EE extends string = string
171170
> = ComponentOptionsBase<
172171
Props,
173172
RawBindings,
@@ -178,23 +177,11 @@ export type ComponentOptionsWithoutProps<
178177
Extends,
179178
E,
180179
EE,
181-
Defaults
180+
{}
182181
> & {
183182
props?: undefined
184183
} & ThisType<
185-
CreateComponentPublicInstance<
186-
{},
187-
RawBindings,
188-
D,
189-
C,
190-
M,
191-
Mixin,
192-
Extends,
193-
E,
194-
Readonly<Props>,
195-
Defaults,
196-
false
197-
>
184+
CreateComponentPublicInstance<{}, RawBindings, D, C, M, Mixin, Extends, E>
198185
>
199186

200187
export type ComponentOptionsWithArrayProps<

test-dts/component.test-d.ts

+12
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ describe('object props', () => {
190190
expectType<ExpectedProps['ggg']>(setup.setupProps.ggg)
191191
expectType<ExpectedProps['ffff']>(setup.setupProps.ffff)
192192
expectType<ExpectedProps['validated']>(setup.setupProps.validated)
193+
194+
// instance
195+
const instance = new MyComponent()
196+
expectType<number>(instance.setupA)
197+
// @ts-expect-error
198+
instance.notExist
193199
})
194200

195201
describe('options', () => {
@@ -356,6 +362,12 @@ describe('no props', () => {
356362

357363
expectType<number>(rawBindings.setupA)
358364
expectType<number>(setup.setupA)
365+
366+
// instance
367+
const instance = new MyComponent()
368+
expectType<number>(instance.setupA)
369+
// @ts-expect-error
370+
instance.notExist
359371
})
360372

361373
describe('options', () => {

0 commit comments

Comments
 (0)