以下代码有效:
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中运行应用程序时收到错误:
未捕获异常:ReferenceError:未定义电子
运行“tsc”时代码编译正常。
查看输入定义,我看到Electron.BrowserWindow是一个类,而BrowserWindow(从导入模块解构的那个)在CommonElectron接口下被定义为:
BrowserWindow: typeof Electron.BrowserWindow;
答案 0 :(得分:2)
DefinitelyTyped中的electron
类型已过时。
您引用的Electron
是由typings(类型定义)创建的名称空间,用于保存描述electron
中类型的所有类型。
在实际的JavaScript中,electron
没有定义全局变量Electron
,因此会出现错误。
导入语句import { BrowserWindow } from 'electron'
是获取实际BrowserWindow
类的ES6语法,以便您可以使用它。
我同意公开名称空间Electron
的打字令人困惑,应该删除。
electron
正在努力拥有自己的打字。