跳到主要内容

宣布 Electron 支持 TypeScript

·阅读时长 4 分钟

electron npm 包现在包含一个 TypeScript 定义文件,提供了完整的 Electron API 的详细注解。这些注解可以提升你的 Electron 开发体验,即使你只编写原生 JavaScript。只需运行 npm install electron 即可在你的项目中获得最新的 Electron 类型定义。


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

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

当库使用原生 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 以及许多其他贡献者提供的错误修复、文档改进和技术指导。

支持

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

愉快的 TypeScript 编程!