首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我必须使用“新Electron.BrowserWindow”而不是“新Electron.BrowserWindow”实例化一个Electron.BrowserWindow?

为什么我必须使用“新Electron.BrowserWindow”而不是“新Electron.BrowserWindow”实例化一个Electron.BrowserWindow?
EN

Stack Overflow用户
提问于 2017-04-08 22:05:00
回答 1查看 789关注 0票数 1

以下代码起作用:

代码语言:javascript
复制
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中)执行以下操作时:

代码语言:javascript
复制
Main.mainWindow = new Electron.BrowserWindow({ width: 800, height: 600 })

在以电子方式运行应用程序时,我会收到一个错误:

未定义的例外: ReferenceError:电子未定义

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

查看类型定义,我发现Electron.BrowserWindow是一个类,而BrowserWindow (从导入模块中解构)在CommonElectron接口下定义为:

代码语言:javascript
复制
BrowserWindow: typeof Electron.BrowserWindow;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-09 04:18:19

electron在DefinitelyTyped中的类型已经过时。

您所指的Electron是由类型(类型定义)创建的名称空间,用于保存electron中描述这些类型的所有类型。

在实际的JavaScript中,electron没有定义全局变量Electron (不再定义),因此出现了错误。

导入语句import { BrowserWindow } from 'electron'是获取实际BrowserWindow类的ES6语法,因此您可以使用它。

我同意让类型暴露名称空间Electron是令人困惑的,应该删除。

electron正在开发自己的类型。

您可以在这里跟踪它:https://github.com/electron/electron/issues/4875

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43300824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档