提供使用电子遥控器导入的模块的打字稿定义。需要IDE

时间:2020-04-19 23:43:38

标签: javascript typescript electron

我想知道在使用电子的remote模块进行IPC时是否可以从渲染器源目录中获取电子主源目录中某个模块的打字稿。

我的主要目标是能够获得我的IDE,以便在处理渲染器源目录文件时为我提供有关模块导出类型的自动完成提示。如果有关系,我同时使用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;

我可以从renderer(React)源文件中访问foo,如下所示:

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

但是,大概是由于require("./api")导致IDE无法帮助我弄清楚该模块中的可用内容。它还不能确定foo是一个数字。

我如何帮助Typescript编译器/ IDE找出api的类型?

甚至可以帮助打字稿编译器弄清楚...remote.require("./api")实际上是/lib/api中的api模块吗?

在这种情况下,我定义成功的原因是编译器告诉我api.bar是未定义的,并且告诉我api.foo可以。

1 个答案:

答案 0 :(得分:0)

尝试使用import type明确告诉TypeScript at<T>()的类型:

hold[]

我相信您必须为以此方式进行的每次导入添加显式键入。