TypeScript类型体操
FrankKai opened this issue · comments
TypeScript类型体操,核心**是 通过类型生成新的类型!
记录一下type-challenges的题解,以及解题思路。
仓库地址:https://github.com/type-challenges/type-challenges/blob/main/README.zh-CN.md
2 - 获取函数返回类型
infer / (...args: any) => infer P
type-challenges/type-challenges#11520
3 - 实现 Omit
keyof / extends / in
type-challenges/type-challenges#11545
4 - 实现 Pick
keyof / extends / in
type-challenges/type-challenges#11021
7 - 实现 Readonly
readonly
type-challenges/type-challenges#11104
10 - 元组转合集
T[number] / extends / infer / never
type-challenges/type-challenges#11408
11 - 元组转换为对象
extends / readonly / in / T[number]
type-challenges/type-challenges#11105
12 - 可串联构造器
泛型组合 / Record / 伪return this
type-challenges/type-challenges#12073
14 - 第一个元素
extends / never / T[0]
type-challenges/type-challenges#11107
15 - 最后一个元素
...T / T['length'] / infer
type-challenges/type-challenges#11586
16 - 出堆
infer / ...T
type-challenges/type-challenges#11595
18 - 获取元组长度
extends / readonly / T['length']
type-challenges/type-challenges#11109
43 - Exclude
extends / never
type-challenges/type-challenges#11111
189 - Awaited
infer / 递归 / Promise<T>
type-challenges/type-challenges#11747
268 - If
extends boolean / extends true
type-challenges/type-challenges#11404
533 - Concat
...T 解构
type-challenges/type-challenges#11423
599 - Merge
keyof / in
type-challenges/type-challenges#11589
898 - Includes
infer / ...T 解构 / 递归
type-challenges/type-challenges#11534
3057 - Push
...T 解构
type-challenges/type-challenges#11527
3060 - Unshift
...T 解构
type-challenges/type-challenges#11529