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

electron-store调用get方法出现TS2339类型错误求助

问题原因及解决方案

这个错误的核心原因是electron-store从v8版本开始彻底移除了get()和set()方法,改用直接的对象属性访问方式来操作存储内容。

解决方案:直接访问存储属性

把你的获取代码改成直接访问store.settings即可,同时调整类型声明(原代码中store.get('settings')返回的是settingsType['settings'],而非整个settingsType):

// main.ts
import Store, { Schema } from 'electron-store';

type Settings = {
  environment: 'development' | 'test' | 'prod',
  refreshInterval: number,
}

// 调整schema对应的类型,根对象就是包含settings属性的结构
const schema: Schema<{ settings: Settings }> = {
  settings: {
    type: 'object',
    properties: {
      environment: {
        type: 'string',
        enum: ['development', 'test', 'prod'],
        default: 'development',
      },
      refreshInterval: {
        type: 'number',
        minimum: 10000, // 十秒
        maximum: 600000, // 十分钟
        default: 60000, // 一分钟
      }
    },
    // 注意:原代码default设为{}不符合required校验要求,改成符合Settings类型的默认值
    default: {
      environment: 'development',
      refreshInterval: 60000
    },
    required: ['environment', 'refreshInterval'],
  }
}

const store = new Store<{ settings: Settings }>({schema});

// 直接访问属性,类型自动推导为Settings
const settingsStore = store.settings;
// 修改值也直接赋值即可
// store.settings.environment = 'prod';

额外说明

  • 原代码里还有一处逻辑问题:schema中settings的default设为{},但required要求必须存在environment和refreshInterval,这会导致初始化时触发schema校验错误,所以需要改成符合要求的默认值。
  • 如果你确实需要使用get()/set()方法,可以降级electron-store到v7版本,但官方不推荐——v8+的新API更契合TypeScript的类型推断逻辑,写法也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:59:53