TL;DR
- TypeScript で
preload
スクリプトを書きたい - サンプルは electron-quick-start-typescript (GitHub) にアップ
参考にさせていただきました
- Electron で nodeIntegration: false にする方法 (@umamichi)
- Electronで1からデスクトップアプリを作り、electron-builderを使ってビルド・リリースするまで (@saki-engineering)
経過
TypeScript では以下のような preload
スクリプトはエラーになってしまう。
src/preload.ts
import{ipcRenderer}from'electron';process.once('loaded',()=>{window.ipcRenderer=ipcRenderer;});
プロパティ 'ipcRenderer' は型 'Window & typeof globalThis' に存在しません。ts(2339)
で、やや強引だが次のような型定義ファイルで Window
の名前空間を拡張した。
@types/global.d.ts
import{IpcRenderer}from'electron';declareglobal{interfaceWindow{ipcRenderer:IpcRenderer;}}
とりあえずこれで target: 'web'
でもメインプロセスとIPC通信は出来るようになった。
src/renderer.ts
window.ipcRenderer.send('async-message','ping!');
Node.js の fs
や path
の(一部)もプリロードしたいがまだやり方がわからない...
結論
TypeScript わからん