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. 类型谓词
评论
发表评论