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

使用Custom-Electron-Titlebar时TypeScript提示removeMenuBar不存在的问题求助

解决custom-electron-titlebar移除菜单栏的TS2353错误问题

问题背景

在React+TypeScript开发的Electron项目中集成custom-electron-titlebar组件时,原代码使用removeMenuBar: true尝试移除菜单栏,但TypeScript抛出TS2353错误——TitleBarOption接口已不再包含该属性,且官方文档未同步更新。

解决方案

方法1:直接隐藏组件渲染的菜单DOM元素

组件初始化完成后,通过DOM选择器定位菜单容器并设置隐藏:

import { Titlebar, TitlebarColor } from "custom-electron-titlebar";

window.addEventListener("DOMContentLoaded", () => {
    const titlebar = new Titlebar({
        backgroundColor: TitlebarColor.fromHex("#000000"),
        titleHorizontalAlignment: "center",
        menuTransparency: 100,
    });

    // 定位并隐藏菜单容器
    const menuContainer = document.querySelector(".custom-electron-titlebar__menu");
    if (menuContainer) {
        menuContainer.style.display = "none";
    }
});

方法2:从Electron主进程隐藏原生应用菜单

如果不需要保留任何菜单功能,直接在Electron主进程中全局隐藏应用菜单:

// main.ts(Electron主进程文件)
import { app, Menu } from "electron";

app.whenReady().then(() => {
    // 彻底隐藏应用菜单
    Menu.setApplicationMenu(null);
});

方法3:临时扩展TypeScript接口(兼容写法)

若想继续保留类似removeMenuBar的写法,可临时扩展TitleBarOption接口规避TS错误(仅为兼容写法,不保证组件实际生效):

import { Titlebar, TitlebarColor, TitleBarOption } from "custom-electron-titlebar";

// 扩展接口添加removeMenuBar属性
declare module "custom-electron-titlebar" {
    interface TitleBarOption {
        removeMenuBar?: boolean;
    }
}

window.addEventListener("DOMContentLoaded", () => {
    new Titlebar({
        backgroundColor: TitlebarColor.fromHex("#000000"),
        titleHorizontalAlignment: "center",
        menuTransparency: 100,
        removeMenuBar: true,
    });
});

说明

优先推荐方法1或方法2:方法2从Electron层面彻底隐藏菜单,适合全局不需要菜单的场景;方法1仅针对组件渲染的菜单元素处理,灵活性更高。方法3仅作为临时兼容方案,因组件已移除该属性,后续版本可能完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:33:27