You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TS类型错误:State属性与定义类型不匹配求助

问题分析与解决

问题根源

你定义的Shoes类型中,brand字段的类型是单个Brand对象,gender字段是单个Gender对象,但你在初始化filterState时,给这两个字段传的是数组(多个Brand/Gender对象的集合),类型完全不匹配,所以TypeScript抛出了错误。

修正方案

把Shoes类型里的brand和gender改成数组类型即可:

type Brand = {
    brand:string;
    checked:boolean;
}
type Gender = {
    gender: "Male" | "Female" | "Kids";
    checked:boolean;
}
// 修改这里,将brand和gender定义为数组类型
type Shoes = {
    brand: Brand[];
    gender: Gender[];
}

然后你的useState初始化代码就可以正常运行,无需修改初始化的对象结构:

const [filterState,setFilterState] = useState<Shoes>({
    brand:[
        { brand:'New Balance', checked: false },
        { brand:'Nike', checked: false },
        { brand:'Addiddas', checked: false },
        { brand:'Puma', checked: false },
        { brand:'Converse', checked: false },
        { brand:'Under Armour', checked: false },
    ],
    gender:[
        { gender:'Male', checked:false },
        { gender:'Female', checked:false },
        { gender:'Kids', checked:false },
    ],
});

补充说明

错误提示里的'{ brand: string; checked: false; }[]' is missing the following properties from type 'Brand': brand, checked,本质是TypeScript期望的是一个Brand对象(自带brand和checked属性),但你传入的是数组——数组本身没有这两个属性,因此触发报错。改成数组类型后,TypeScript就能识别这两个字段是多个对象的集合,和你初始化的结构完全匹配。

内容的提问来源于stack exchange,提问作者Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:07:11