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

TypeScript中调用toString()未变更属性类型,访问valorControlo报类型错误

错误原因

你初始化sidenavObj状态时传入的默认值是空字符串'',TypeScript 会自动推导该状态的类型为string,而字符串类型本身不存在valorControlo属性,因此抛出类型错误,调用toString()无法解决类型不匹配的本质问题。

解决方案
  • 第一步:定义sidenavObj对应的数据结构类型
// 可根据实际业务字段自行补充调整
interface SidenavConfig {
  valorControlo: string;
}
  • 第二步:修正状态的类型声明与初始值,不要用空字符串作为对象类型的初始值
// 用联合类型兼容初始空值场景
const [sidenavObj, setSidenavObj] = useState<SidenavConfig | null>(null);
  • 第三步:调整useEffect内的访问逻辑即可
useEffect(() => {
    if (!isDefined(sidenavObj)) {
      // 原有空值逻辑
    } 
    else {
      // 此时TS已识别sidenavObj为合法对象类型,可正常访问valorControlo属性
      setIsBarExtended(stringToBool(sidenavObj.valorControlo))
    }
  }, [sidenavObj]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:15:03