跳到主要内容

宣布 Electron 支持 TypeScript

·5 分钟阅读

electron npm 包现在包含一个 TypeScript 定义文件,该文件提供了整个 Electron API 的详细注解。这些注解可以改善您的 Electron 开发体验,即使您编写的是纯 JavaScript。只需 npm install electron 即可在您的项目中获取最新的 Electron 类型定义。


TypeScript 是微软创建的一种开源编程语言。它是 JavaScript 的超集,通过添加对静态类型的支持来扩展语言。TypeScript 社区近年来发展迅速,在最近的 Stack Overflow 开发者调查中,TypeScript 被评为 最受欢迎的编程语言 之一。TypeScript 被描述为“可扩展的 JavaScript”,GitHubSlack微软 的团队都在使用它来编写数百万用户使用的可扩展 Electron 应用程序。

TypeScript 支持 JavaScript 中许多较新的语言特性,如类、对象解构和 async/await,但其真正的区别特性是类型注解。声明程序预期的输入和输出数据类型可以通过帮助您在编译时发现错误来减少 bug,并且这些注解还可以作为程序工作方式的正式声明。

当库用纯 JavaScript 编写时,类型在编写文档时往往只是事后模糊定义。函数通常可以接受比文档中更多的类型,或者函数可能存在未文档化的隐式约束,这可能导致运行时错误。

TypeScript 通过定义文件解决了这个问题。TypeScript 定义文件描述了一个库的所有函数及其预期的输入和输出类型。当库作者将其 TypeScript 定义文件与发布的库捆绑在一起时,该库的使用者可以直接在编辑器中探索其 API 并立即开始使用,通常无需查阅库的文档。

许多流行项目,如 AngularVue.jsnode-github(以及现在的 Electron!)都会编译自己的定义文件并将其与发布的 npm 包捆绑。对于不捆绑自己定义文件的项目,则有 DefinitelyTyped,一个由社区维护的第三方定义文件生态系统。

安装

从 1.6.10 版本开始,Electron 的每个发布版本都包含自己的 TypeScript 定义文件。当您从 npm 安装 electron 包时,electron.d.ts 文件会自动与安装的包捆绑在一起。

安装 Electron 的最安全方式是使用精确的版本号

npm install electron --save-dev --save-exact

或者如果您正在使用 yarn

yarn add electron --dev --exact

如果您之前已经使用了 `@types/electron` 和 `@types/node` 等第三方定义,您应该将它们从 Electron 项目中移除以防止任何冲突。

定义文件来源于我们的结构化 API 文档,因此它将始终与Electron 的 API 文档保持一致。只需安装 electron,您将始终获得与您正在使用的 Electron 版本保持同步的 TypeScript 定义。

用法

有关如何安装和使用 Electron 新的 TypeScript 注解的概述,请观看此简短演示截屏

如果您正在使用 Visual Studio Code,您已经内置了 TypeScript 支持。此外,还有社区维护的适用于 AtomSublimevim其他编辑器 的插件。

一旦您的编辑器配置了 TypeScript,您将开始看到更多上下文感知的行为,例如自动完成建议、内联方法引用、参数检查等等。

Method autocompletion

Method reference

Argument checking

TypeScript 入门

如果您是 TypeScript 的新手并想了解更多信息,这部来自微软的介绍视频很好地概述了该语言的创建原因、工作原理、使用方法以及发展方向。

TypeScript 官方网站上还有一个手册和一个演练场

由于 TypeScript 是 JavaScript 的超集,您现有的 JavaScript 代码已经是有效的 TypeScript 代码。这意味着您可以逐步将现有 JavaScript 项目过渡到 TypeScript,根据需要加入新的语言特性。

致谢

如果没有 Electron 开源维护者社区的帮助,这个项目是不可能实现的。感谢 Samuel AttardFelix RiesebergBirunthan MohanathasMilan BurdaBrendan Forster 以及许多其他人的 bug 修复、文档改进和技术指导。

支持

如果您在使用 Electron 新的 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 仓库中提出问题。

愉快的 TypeScript 开发!