Description
Vue version
3.4.27
Link to minimal reproduction
Steps to reproduce
<script setup lang="ts"> type TableEmits = (event: "select" | "select-all" | "expand-change" | "current-change" | "selection-change") => void; type ExtractEventNames = T extends (event: infer E, ...args: any[]) => void ? E : never; type EventNames = ExtractEventNames; type Emits = { [E in EventNames]: any[]; }; const emits = defineEmits() </script>What is expected?
const emits: ((evt: "select", ...args: any[]) => void) & ((evt: "select-all", ...args: any[]) => void) & ((evt: "expand-change", ...args: any[]) => void) & ((evt: "current-change", ...args: any[]) => void) & ((evt: "selection-change", ...args: any[]) => void)
What is actually happening?
Error: [@vue/compiler-sfc] Failed to resolve index type into finite keys
src/App.vue
1 | <script setup lang="ts">
2 | type TableEmits = (event: "select" | "select-all" | "expand-change" | "current-change" | "selection-change") => void;
| ^
3 | type ExtractEventNames = T extends (event: infer E, ...args: any[]) => void ? E : never;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 | type EventNames = ExtractEventNames;
at bMe.error (https://play.vuejs.org/assets/index-BB5tYPtE.js:185:401)
at Xu (https://play.vuejs.org/assets/index-BB5tYPtE.js:201:2001)
at Xu (https://play.vuejs.org/assets/index-BB5tYPtE.js:201:1498)
System Info
No response
Any additional comments?
No response