primefaces / primevue

Next Generation Vue UI Component Library
https://primevue.org
MIT License
10.84k stars 1.24k forks source link

After updating PrimeVue 4.1.1, typescript errors began to occur #6791

Open SchwarzesWasser opened 1 week ago

SchwarzesWasser commented 1 week ago

Describe the bug

Since version 4.1.1, many TS errors have appeared in my project. The example from stackblitz does not output type errors when executing the npm run type-check command. But there are a lot of errors in the IDE, for example:

src/components/form/LocalSelect/LocalSelect.vue:260:40 - error TS2339: Property '$el' does not exist on type '{ $props: SelectProps & VNodeProps & AllowedComponentProps & ComponentCustomProps; $slots: SelectSlots; $emit: ((e: "filter", event: SelectFilterEvent) => void) & ... 7 more ... & ((e: "change", event: SelectChangeEvent) => void); }'.

const tempRef = localSelectRef.value.$el.querySelector('.p-multiselect-label-container');

src/components/form/LocalSelect/LocalSelect.vue:266:35 - error TS2339: Property 'overlayVisible' does not exist on type '{ $props: SelectProps & VNodeProps & AllowedComponentProps & ComponentCustomProps; $slots: SelectSlots; $emit: ((e: "filter", event: SelectFilterEvent) => void) & ... 7 more ... & ((e: "change", event: SelectChangeEvent) => void); }'.

watch(() => localSelectRef.value?.overlayVisible, (newValue) => {

src/components/form/LocalSelect/LocalSelect.vue:275:70 - error TS2339: Property '$el' does not exist on type '{ $props: SelectProps & VNodeProps & AllowedComponentProps & ComponentCustomProps; $slots: SelectSlots; $emit: ((e: "filter", event: SelectFilterEvent) => void) & ... 7 more ... & ((e: "change", event: SelectChangeEvent) => void); }'.

if (props.isFilter && localSelectRef.value && !localSelectRef.value.$el.contains(event.target)) {

And there are quite a lot of such errors in different PrimeVue controls. For example, upload() and choose() methods no longer exist in the FileUpload component in template ref. Vue: Property upload does not exist on type.

Could there be a problem updating the definition of controls? Everything worked fine before version 4.1.1

image

Is this a PrimeVue bug or should I work with types in some other way?

Reproducer

https://stackblitz.com/edit/primevue-4-ts-vite-issue-template-23calj?file=src%2FApp.vue

PrimeVue version

4.1.1

Vue version

4.x

Language

TypeScript

Build / Runtime

Vite

Browser(s)

No response

Steps to reproduce the behavior

No response

Expected behavior

No response

gerardmrk commented 1 week ago

Also getting many type errors on v4.2.1 (no problems prior), e.g.:

this.$toast.add({ /* ... */ });
> Property '$toast' does not exist on type 'CreateComponentPublicInstance<...'.
(this.$refs[`toolbarmobilemenu`] as typeof MenuX).toggle(e);
> Property 'toggle' does not exist on type 'DefineComponent<MenuProps, MenuSlots, ((e: "focus", event: Event) => void) & ((e: "blur", event: Event) => void), MenuMethods>'.
(this.$refs[`tablesettings`] as typeof Popover).hide();
> Property 'hide' does not exist on type 'DefineComponent<PopoverProps, PopoverSlots, ((e: "show") => void) & ((e: "hide") => void), PopoverMethods>'.