FrankKai / FrankKai.github.io

FE blog

Home Page:https://frankkai.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

3312 - Parameters

infer
type-challenges/type-challenges#11539