gpt4 book ai didi

typescript - 为什么我必须使用 "new BrowserWindow"而不是 "new Electron.BrowserWindow"实例化 Electron.BrowserWindow ?

转载 作者:行者123 更新时间:2023-12-03 12:24:42 27 4
gpt4 key购买 nike

以下代码有效:

import { app, BrowserWindow } from 'electron';

class Main {
static mainWindow: Electron.BrowserWindow;
static application: Electron.App;

private static onWindowAllClosed()
{
if (process.platform !== 'darwin')
Main.application.quit();
}

private static onClose()
{
Main.mainWindow = null;
}

private static onReady()
{
Main.mainWindow = new BrowserWindow({ width: 800, height: 600 })
Main.mainWindow.loadURL('file://' + __dirname + '/index.html');
Main.mainWindow.on('closed', Main.onClose);
}

static main(app: Electron.App)
{
Main.application = app;
Main.application.on('window-all-closed', Main.onWindowAllClosed);
Main.application.on('ready', Main.onReady);
}
}

Main.main(app);

当我尝试(在 onReady 中)改为执行以下操作时:
Main.mainWindow = new Electron.BrowserWindow({ width: 800, height: 600 })

在 Electron 中运行应用程序时收到错误消息:

Uncaught Exception: ReferenceError: Electron is not defined



运行“tsc”时,代码编译得很好。

查看类型定义,我看到 Electron.BrowserWindow 是一个类,而 BrowserWindow(通过导入模块而被解构的那个)在 CommonElectron 接口(interface)下定义为:
BrowserWindow: typeof Electron.BrowserWindow;

最佳答案

electron绝对类型中的打字已经过时了。
Electron您指的是由类型(类型定义)创建的命名空间,用于保存所有类型,这些类型描述了 electron 中的类型。 .

在实际的 JavaScript 中,electron没有全局变量 Electron已定义(不再),因此您会看到错误。

进口声明import { BrowserWindow } from 'electron'是获取实际 BrowserWindow 的 ES6 语法类,以便您可以使用它。

我同意让类型暴露命名空间 Electron令人困惑,应该删除。
electron正在努力拥有自己的类型。

你可以在这里关注它:https://github.com/electron/electron/issues/4875

关于typescript - 为什么我必须使用 "new BrowserWindow"而不是 "new Electron.BrowserWindow"实例化 Electron.BrowserWindow ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com