宣布在 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,但其真正的差异化特性是类型注解。声明程序预期的输入和输出数据类型可以通过在编译时帮助您查找错误来减少 bug,并且这些注解还可以作为程序工作方式的正式声明。
当库是用原生 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 网站上还有一个手册和一个游乐场。
由于 TypeScript 是 JavaScript 的超集,您现有的 JavaScript 代码已经是有效的 TypeScript。这意味着您可以逐步将现有的 JavaScript 项目迁移到 TypeScript,根据需要添加新的语言功能。
致谢
此项目得以实现,离不开 Electron 社区开源维护者的帮助。感谢 Samuel Attard、Felix Rieseberg、Birunthan Mohanathas、Milan Burda、Brendan Forster 以及其他许多人在 bug 修复、文档改进和技术指导方面的贡献。
支持
如果您在使用 Electron 新的 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 仓库中提交 issue。
祝您 TypeScript 愉快!

































