以下代码起作用:
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 })在以电子方式运行应用程序时,我会收到一个错误:
未定义的例外: ReferenceError:电子未定义
当运行"tsc“时,代码编译得很好。
查看类型定义,我发现Electron.BrowserWindow是一个类,而BrowserWindow (从导入模块中解构)在CommonElectron接口下定义为:
BrowserWindow: typeof Electron.BrowserWindow;发布于 2017-04-09 04:18:19
electron在DefinitelyTyped中的类型已经过时。
您所指的Electron是由类型(类型定义)创建的名称空间,用于保存electron中描述这些类型的所有类型。
在实际的JavaScript中,electron没有定义全局变量Electron (不再定义),因此出现了错误。
导入语句import { BrowserWindow } from 'electron'是获取实际BrowserWindow类的ES6语法,因此您可以使用它。
我同意让类型暴露名称空间Electron是令人困惑的,应该删除。
electron正在开发自己的类型。
https://stackoverflow.com/questions/43300824
复制相似问题