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
相关产品推荐
相关产品推荐

