属性在类型上不存在 窗口 &类型全局这



在一个电子反应typescript应用程序我得到这个错误:Property 'api' does not exist on type 'Window & typeof globalThis'. window.api.send('open-type-A-window', '');

但是在一个文件index.d.ts中,我是这样声明接口Window的:

declare global {
namespace NodeJS {
declare interface Window {
"electron": {
openNewWindow(): void;
},
"api": {
send: (channel, data) => {
ipcRenderer.invoke(channel, data).catch(e => console.log(e))
},
receive: (channel, func) => {
console.log("preload-receive called. args: ");
ipcRenderer.on(channel, (event, ...args) => func(...args));
},
electronIpcSendTo: (window_id: string, channel: string, ...arg: any) => {
ipcRenderer.sendTo(window_id, channel, arg);
},
electronIpcSend: (channel: string, ...arg: any) => {
ipcRenderer.send(channel, arg);
},
electronIpcSendSync: (channel: string, ...arg: any) => {
return ipcRenderer.sendSync(channel, arg);
},
electronIpcOn: (channel: string, listener: (event: any, ...arg: any) => void) => {
ipcRenderer.on(channel, listener);
},
electronIpcOnce: (channel: string, listener: (event: any, ...arg: any) => void) =>
{
ipcRenderer.once(channel, listener);
},
electronIpcRemoveListener:  (channel: string, listener: (event: any, ...arg: any) 
=> void) => {
ipcRenderer.removeListener(channel, listener);
},
electronIpcRemoveAllListeners: (channel: string) => {
ipcRenderer.removeAllListeners(channel);
}
}
}
}
}

我读过这个线程:https://github.com/Microsoft/TypeScript/issues/19816但我没有得到适当的解决方案。

我应该添加/修改什么来避免这个错误Property 'api' does not exist on type 'Window & typeof globalThis'?

  • 节点:v14.5.0
  • 电子:v11.2.3
  • 打印稿:v4.1.3
  • 操作系统:Ubuntu 18.04.4 Desktop

我不熟悉React.js,但我在一个Electron-Angular应用程序中遇到了同样的问题。通过将下面的声明添加到我的app.module.ts文件中,它允许TypeScript识别window.

中的api

对象。您应该能够通过在TS项目中添加主模块来完成相同的操作。

declare global {
interface Window {
api?: any;
}
}

之后,你应该能够在项目的任何地方简单地执行你的代码。

if(window.api) {
window.api.send('ipcChannel', data);
}

相关内容

  • 没有找到相关文章

最新更新