Skip to content

RemoveIndexSignature causes TS Errors with Mapped Types in Vue slots #321

Open
@m-kutnik

Description

@m-kutnik

Describe the bug
Hi, I'm unable to test my Generic component 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 likeObject 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:

type ExtractSlots<C> = AllowNonFunctionSlots<
Partial<RemoveIndexSignature<ComponentSlots<C>>>
>

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
  2. Mapped type for header slots
    image
  3. Error output
    image
  4. Slots type using Vue Test Utils
    image

Related information:

  • @testing-library/vue version: 8.1.0
  • Vue version: 3.4.34
  • node version: 20.17.0
  • npm version: 10.8.2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions