这是我的代码,vue3+typescipt
<script setup lang="ts">
interface NumberDictionary {
[index: string]: string;
}
const formInfo: NumberDictionary = {
name: "john",
want: "eat",
};
Object.entries(formInfo).forEach(([key, value]) => {
console.log(key, value);
});
</script>
<template>
<form>
<input v-for="(value, key) in formInfo" :name="key" :value="value" :key="key" type="text" />
</form>
</template>
但是 typescript 推断的类型不一致
在 v-for
中遍历对象时,key
被推断为string | number
类型,这就导致 input.name
无法接受 number
类型而类型报错。
有没有大佬能解释下。为什么key
会被推断为 string | number
类型
Vue3中,对象的
v-for
类型声明如下:Typescript文档对于
keyof
的说明:所以可以知道
key
的类型是string | number