type-challenges刷题总结


type-challenges中级及以下难度题目二刷完成,简单总结下解题过程中用到的思路和知识点。

1. Utility Types

(1) 修改对象属性:Partial<ObjectType>、Required<ObjectType>、Readonly<ObjectType>

(2) 构造新的对象:Pick<ObjectType, Keys>、Omit<ObjectType, Keys>、Record<Keys, Type>

(3) 构造新的联合类型:Exclude<UnionType, Members>、Extract<UnionType, Members>、NonNullable<TypeIncludesNull>

(4) 函数相关:Parameters<FunctionType>、ReturnType<FunctionType>

(5) 字符串相关:Uppercase<StringType>、Lowercase<StringType>、Capitalize<StringType>、Uncapitalize<StringType>

2. 类型的展开/遍历

(1) 数组/元组:Array[number]

(2) 对象:keyof Object

(3) 联合类型:Union extends any ? XXX : never

(4) 借助泛型实现递归:

3. 一致性判断

(1) 判断是否为never:

(2) 判断是否完全一致:

4. 数学计算

(1) 构造数组,利用数组'length'属性实现±1功能,进而扩展加减计算。

(2) 涉及较大数值加减时,TS会提示泛型实例化递归嵌套过深。可构造Multiply10类型,并将数字转为字符串进行处理,递归时每发现一位新字符,即将此前结果×10,再加上新字符,作为本轮递归的结果。

5. 对象属性处理

(1) 删除对象属性:

(2) 去除readonly:

6. 类型谓词

7. 类型断言

评论