返回

如何为 DefinitelyTyped 贡献 @types 包

前端

向微软官方贡献 @types 包后引发的思考

对于在前端圈混迹多年的老司机来说,TypeScript 这种编程语言几乎是绕不过去的坎。熟悉 TypeScript 的老司机都知道,微软有一个官方的 TypeScript 定义文件仓库,叫做 DefinitelyTyped,里面包含了各种各样第三方库的 TypeScript 定义文件,也就是我们常说的 @types 包。

对于 TypeScript 来说,@types 包是必不可少的,因为它是 TypeScript 编译器理解第三方库的关键。如果没有 @types 包,TypeScript 编译器就无法正确解析第三方库中的代码,从而导致各种各样的编译错误。

作为一个合格的前端老司机,我当然也经常用到 @types 包。不过,我之前一直都是用别人贡献的 @types 包,从来没想过自己也来贡献一个。直到最近,我遇到了一个奇葩的需求:需要使用一个非常冷门的第三方库,这个库的 @types 包并没有收录在 DefinitelyTyped 中。

没办法,为了满足项目需求,我只好自己动手贡献一个 @types 包了。说干就干,我按照 DefinitelyTyped 的贡献指南,一步一步地创建了 @types 包,并提交了 Pull Request。

本以为贡献一个 @types 包是一件很简单的事情,没想到却遇到了重重困难。首先是代码风格问题,DefinitelyTyped 对代码风格有严格的要求,而我的代码风格与之相去甚远。为了符合要求,我不得不花了很多时间重构代码。

其次是测试问题,DefinitelyTyped 要求每个 @types 包都必须提供测试用例。然而,这个冷门的第三方库并没有提供任何测试用例,我只好自己编写测试用例。这又是一件非常耗时的事情。

最后是审核问题,DefinitelyTyped 的审核流程非常严格,我的 Pull Request 被反复退回了好几次,每次都被要求修改各种各样的问题。修改了又修改,总算过了审核。

历经千辛万苦,我的 @types 包终于被合并到了 DefinitelyTyped 中。虽然过程很艰辛,但我从中也学到了很多东西。首先,我更加深刻地理解了 TypeScript 的编译原理和 @types 包的作用。其次,我提高了自己的代码风格和测试能力。最后,我体会到了开源社区的力量和贡献的意义。

回过头来看,我之所以能成功贡献 @types 包,主要是因为我有一定的 TypeScript 基础和代码能力。对于 TypeScript 初学者来说,自己贡献 @types 包可能是一件非常有挑战的事情。不过,只要有足够的耐心和毅力,我相信大家都能做到。

以下是贡献 @types 包的一些建议:

  1. 熟悉 TypeScript 的编译原理和 @types 包的作用。
  2. 了解 DefinitelyTyped 的贡献指南和代码风格要求。
  3. 编写高质量的代码和测试用例。
  4. 耐心和毅力。

最后,我想对微软官方的 DefinitelyTyped 团队表示感谢。感谢你们为 TypeScript 社区做出的贡献。