ITADN

`RemoveIndexSignature` causes TS Errors with Mapped Types in Vue slots

#321Openm-kutnik 创建于 2024-09-11
bug
M
m-kutnikcommented
**Describe the bug** Hi, I'm unable to test my [Generic component](https://vuejs.org/api/sfc-script-setup.html#generics) that uses mapped types to create the slots dynamically. When I attempt to test the component using Testing Library, the mapped types are removed from the slots type, causing TypeScript errors like`Object literal may only specify known properties, and X does not exist in type Y` (screen 3) After reviewing the type definitions, I noticed that `ExtractSlots` uses `RemoveIndexSignature` which appears to remove the mapped types from the component's slots. Why is that the case? It's worth noting that Vue Test Utils does not remove the mapped types from the slots' annotation (screen 4). Type definition: https://github.com/testing-library/vue-testing-library/blob/d46ed8f757e77fe85b369847c21d394bb9706066/types/index.d.ts#L54-L56 **To Reproduce** Steps to reproduce the behavior: I haven't prepared a reproduction case, but I can create one if needed **Expected behavior** Mapped types should be preserved in the slots' type **Screenshots** 1. Slots definition ![image](https://github.com/user-attachments/assets/18dc753e-5450-4faa-986c-30b9faff9903) 2. Mapped type for header slots ![image](https://github.com/user-attachments/assets/ecbadf93-2043-444e-a9d2-1eb60d48e8f5) 3. Error output ![image](https://github.com/user-attachments/assets/f9388488-cf1d-423f-b72c-268743590ed9) 4. Slots type using Vue Test Utils ![image](https://github.com/user-attachments/assets/d1f98bb1-18eb-4dd8-bd35-075578b93012) **Related information:** - `@testing-library/vue` version: 8.1.0 - `Vue` version: 3.4.34 - `node` version: 20.17.0 - `npm` version: 10.8.2
0 条评论