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 官方网站上还有一个手册和一个游乐场。
由于 TypeScript 是 JavaScript 的超集,因此您现有的 JavaScript 代码已经是有效的 TypeScript 代码。这意味着您可以逐步将现有的 JavaScript 项目过渡到 TypeScript,并根据需要添加新的语言功能。
致谢
如果没有 Electron 开源维护者社区的帮助,这个项目是不可能实现的。感谢 Samuel Attard、Felix Rieseberg、Birunthan Mohanathas、Milan Burda、Brendan Forster 以及其他许多人为他们的错误修复、文档改进和技术指导所做的贡献。
支持
如果您在使用 Electron 的新 TypeScript 定义文件时遇到任何问题,请在 electron-typescript-definitions 存储库上提交问题。
祝您 TypeScripting 愉快!