工作累了吗,来点类型体操放松一下吧
321,上链接:type-challenges。
它通过@type-challenges/utils包实现了类型检查,这样就可以直接在ts playground中运行。你可以点击Hello World感受一下。
拿简单难度的最后一个元素来举个例子:
1 | /* _____________ 你的代码 _____________ */ |
可以有很多解法,比如正统的
1 | type Last<T extends unknown[]> = T extends [...infer _, infer L] ? L : never |
或者调皮一点的
1 | type Last<T extends unknown[]> = [any, ...T][T["length"]] |
每道题都会有很多人在github issue上讨论,交流自己的想法。查看这些讨论相比一个简单的参考答案,对学习ts类型的帮助可谓是天差地别。
它受到市面上的类型工具库(比如type-fest、ts-toolbelt、utility-types等)启发,提供了简单、中等、困难、地狱4个难度的题目,涉及array、object、number、infer、template等方面。开心的去玩耍吧。