我正在使用 Electron、React 和 TypeScript 编写一个依赖于本机 Node 模块的应用程序。我启用了上下文隔离,并且正在使用预加载脚本将本机模块的 API 公开到全局范围。我的预加载脚本如下所示:
const {contextBridge} = require('electron')
contextBridge.exposeInMainWorld('electron', {basis: require('basis')})
在我的应用程序的非打字稿版本中,我可以通过以下方式使用它:
window.electron.basis["some property of the native module"]
然而,TypeScript 显然没有原生模块的 API 概念。我应该如何让它知道?我取得的一项成功是index.tsx
推杆:
declare global {
interface Window {
electron: { basis: { greeting(): string } };
}
}
但这似乎很笨拙。我应该在本机模块中放置一个 .d.ts 文件吗?我可以导出这个接口合并到不同的文件吗?作为参考,我将Neon与 N-API 后端一起使用。