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. 类型断言