宣布在 Electron 中支持 TypeScript
electron npm 包现在包含一个 TypeScript 定义文件,该文件为整个 Electron API 提供了详细的注解。这些注解可以改善您的 Electron 开发体验,即使您编写的是原生 JavaScript。只需 npm install electron 即可在您的项目中获取最新的 Electron 类型。
TypeScript 是由 Microsoft 创建的开源编程语言。它扩展了 JavaScript 语言,增加了对静态类型支持。TypeScript 社区近年来发展迅速,在最近的一次 Stack Overflow 开发者调查中,TypeScript 被评为 最受喜爱的编程语言 之一。TypeScript 被描述为“可扩展的 JavaScript”,GitHub、Slack 和 Microsoft 的团队都在使用它来编写可扩展的 Electron 应用,这些应用被数百万用户使用。
TypeScript 支持 JavaScript 中许多较新的语言特性,例如类、对象解构和 async/await,但其真正的差异化特性是 类型注解。声明程序期望的输入和输出数据类型可以 减少错误,帮助您在编译时发现错误,并且这些注解还可以作为程序如何工作的正式声明。
当库是用原生 JavaScript 编写时,类型通常在编写文档时被模糊地定义为事后添加。函数通常可以接受比文档记录的更多的类型,或者函数可能存在未记录的隐藏约束,这可能导致运行时错误。
TypeScript 使用 定义文件 解决了这个问题。TypeScript 定义文件描述了库的所有函数及其期望的输入和输出类型。当库作者将 TypeScript 定义文件与发布的库捆绑在一起时,该库的使用者可以在他们的编辑器中 直接探索其 API 并立即开始使用它,通常无需查阅库的文档。
许多流行的项目,例如 Angular、Vue.js、node-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 支持。还有社区维护的插件,适用于 Atom、Sublime、vim 和 其他编辑器。
一旦您的编辑器配置为支持 TypeScript,您将开始看到更多上下文感知的行为,如自动完成建议、内联方法引用、参数检查等。



开始使用 TypeScript
如果您是 TypeScript 的新手并想了解更多信息,这个 来自 Microsoft 的入门视频 提供了关于该语言创建原因、工作方式、如何使用以及未来发展方向的良好概述。
由于 TypeScript 是 JavaScript 的超集,您现有的 JavaScript 代码已经是有效的 TypeScript。这意味着您可以逐步将现有的 JavaScript 项目迁移到 TypeScript,根据需要添加新的语言功能。
感谢
如果没有 Electron 社区的开源维护者的帮助,这个项目将无法实现。感谢 Samuel Attard、Felix Rieseberg、Birunthan Mohanathas、Milan Burda、Brendan Forster 以及其他许多人为他们的错误修复、文档改进和技术指导。
支持
如果您在使用 Electron 的新型 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 仓库中提交 issue。
祝您 TypeScript 愉快!
