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

使用keyof typeof处理React对象状态:如何指定toggle函数的key类型?

React中toggle函数的key参数类型问题

你遇到的问题是因为TypeScript对对象索引的类型检查比较严格,直接用string类型作为索引时,范围远大于actives对象实际拥有的键,所以会报错。正确的类型设置有两种方案:

方案1:使用字面量联合类型

直接限定key只能是actives对象已有的键值:

const toggle = (key: 'active1' | 'active2') => setActives((actives) => ({ ...actives, [key]: !actives[key] }));

方案2:动态提取键类型

如果后续可能给actives添加更多属性,用keyof typeof actives可以自动获取对象所有键的类型,更灵活:

const toggle = (key: keyof typeof actives) => setActives((actives) => ({ ...actives, [key]: !actives[key] }));

这两种方式都能让TypeScript确认key是actives对象的合法键,避免索引错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:01:00