[转]TypeScript 泛型
泛型是 TypeScript(以下简称 TS) 比较高级的功能之一,理解起来也比较困难。泛型应用场景非常广泛,很多地方都能看到它的影子。平时我们阅读开源TS 项目源码,或者在自己的 TS 项目中使用一些第三方库(比如React)的时候,经常会看到各种泛型定义。如果你不是特别了解泛型,那么你很可能不仅不会用,不会实现,甚至看不懂这是在干什么。
相信大家都经历过,看到过,或者正在写「一些应用,这些应用充斥着各种重复类型定义, any 类型层出不穷,鼠标移到变量上面的提示只有any,不要说类型操作了,类型能写对都是个问题」 。我也经历过这样的阶段,那个时候我对 TS 还比较陌生。
随着在 TS 方面学习的深入,越来越认识到 「真正的 TS 高手都是在玩类型」 ,对类型进行各种运算生成新的类型。这也好理解,毕竟 「TS提供的其实就是类型系统」 。你去看那些 TS 高手的代码,会各种「花式使用泛型」 。 可以说泛型是一道坎,只有真正掌握它,你才知道「原来TS 还可以这么玩」 。怪不得面试的时候大家都愿意问泛型,尽管面试官很可能也不怎么懂。
「只有理解事物的内在逻辑,才算真正掌握了,不然永远只是皮毛,不得其法」 。本文就带你走进泛型,带你从另一个角度看看究竟什么是泛型,为什么要有它,它给 TS 带来了什么样的不同。
刺鸟的荆棘树