Укажите определение машинописного текста для модулей, импортированных с помощью remote.require в IDE. - PullRequest
1 голос
/ 20 апреля 2020

Я хочу знать, возможно ли получить типизацию модуля в каталоге основного источника электронов из каталога источника рендерера при использовании модуля remote электрона для IP C.

Моя основная цель чтобы моя среда разработки могла давать мне подсказки по автозаполнению типов экспорта модуля, когда я работаю с файлами исходных каталогов рендерера. Если это имеет значение, я использую и IntelliJ, и vscode.

Например, предположим, что структура папок приложения с электронной реакцией следующая:

/src
|-- index.tsx       // Entry point for building the renderer app
/lib
|-- electron.ts     // main entry point to initialize electron app
|-- api/            // The module that implements the API contract to the front end
    |-- index.ts

Предположим, экспорт api / index.ts одну константу, которую я хочу сделать доступной из приложения React.

export const foo = 1;

Из исходных файлов рендерера (React) я могу получить доступ к foo следующим образом:

const api = window.require("electron").remote.require("./api")
console.log(api.foo);

Однако предположительно из-за require("./api") IDE не может помочь мне понять, что доступно из этого модуля. Он также не может определить, что foo является числом.

Как я могу помочь компилятору / IDE для машинописи определить тип API?

Можно ли даже помочь по изображению компилятора машинописи что ...remote.require("./api") на самом деле модуль API в /lib/api?

В этом случае я определяю успех как компилятор, который говорит мне, что api.bar не определен, и говорит, что api.foo в порядке.

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте явно указать TypeScript тип api с типом импорта :

const api: typeof import('./api') = window.require("electron").remote.require("./api");
api.  // IntelliSense should show a suggestion for `foo` here

Я считаю, что вам придется добавлять явные наборы для каждого импорта, который вы выполняете в вот так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...