fix: MkSelectのmodelに対する型チェックを厳格化

This commit is contained in:
kakkokari-gtyih 2025-09-06 13:35:10 +09:00
parent 79dc0e682d
commit 9634c1ccdb
1 changed files with 6 additions and 2 deletions

View File

@ -67,7 +67,7 @@ export type GetMkSelectValueTypesFromDef<T extends MkSelectItem[]> = T[number] e
: never; : never;
</script> </script>
<script lang="ts" setup generic="ITEMS extends MkSelectItem[], MODELT = string extends GetMkSelectValueTypesFromDef<ITEMS> ? OptionValue : GetMkSelectValueTypesFromDef<ITEMS>"> <script lang="ts" setup generic="ITEMS extends MkSelectItem[], MODELT extends OptionValue">
import { onMounted, nextTick, ref, watch, computed, toRefs } from 'vue'; import { onMounted, nextTick, ref, watch, computed, toRefs } from 'vue';
import { useInterval } from '@@/js/use-interval.js'; import { useInterval } from '@@/js/use-interval.js';
import type { MenuItem } from '@/types/menu.js'; import type { MenuItem } from '@/types/menu.js';
@ -85,7 +85,11 @@ const props = defineProps<{
large?: boolean; large?: boolean;
}>(); }>();
const model = defineModel<MODELT>({ required: true }); const model = defineModel<MODELT & (
MODELT extends GetMkSelectValueTypesFromDef<ITEMS>
? unknown
: 'Error: The type of model does not match the type of items.'
)>({ required: true });
const { autofocus } = toRefs(props); const { autofocus } = toRefs(props);
const focused = ref(false); const focused = ref(false);