请问,是否有比较好的对 ipcMain和ipcRenderer 通信的typescript的封装?
按照官方文档写的代码:
主进程:
ipcMain.on('ping', () => console.log('pong'))
渲染进程:
window.electron.ipcRenderer.send('ping')
这样使用不是很好,因为:
1、渲染进程调用有时候是:send/sendSync/sendTo/invoke
主进程监听的时候有时候又是:
on/handle
2、在定义preload.ts的时候:
传输的
declare global {
interface Window {
electron: ElectronAPI
api: unknown
IPC: {
invoke: (channel: string, data: unknown[]) => Promise<unknown>
ipcOn: (
channel: string,
fun: (event: IpcRendererEvent, data: unknown[]) => void
) => Electron.IpcRenderer
removeAllListeners: (channel: string) => Electron.IpcRenderer
}
}
}
一般把data定义的:data: unknown[]
, 这个传输的时候,很难在主进程知道传入过来的是什么数据类型,这里应该进行优化。 确定一个数据结构。