typescript 类型练习之递归

数组类型的递归

type DeepPromiseValueType

> = P extends Promise ? ValueType extends Promise ? DeepPromiseValueType : ValueType : never type res1 = DeepPromiseValueType>>>> type DeepPromiseValueType2 = T extends Promise ? DeepPromiseValueType2 : T; type res2 = DeepPromiseValueType2>> type res3 = Record type ReverseArr = Arr extends [infer First, ...infer Rest] ? [...ReverseArr, First] : Arr; type res4 = ReverseArr<[1,2,3,4,5]> type IsEqual = (A extends B ? true : false) & (B extends A ? true : false) type Includes = Arr extends [infer First, ...infer Rest] ? IsEqual extends true ? true : Includes : false; type res5 = Includes<[1, 2, 3, 44, 5, {a: 11, b: 2}], {a: 11}> type BuildArray< Length extends number, Ele = unknown, Arr extends unknown[] = [] > = Arr['length'] extends Length ? Arr : BuildArray type res6 = BuildArray<3>

 // 字符串

type ReplaceStr<
    Str extends string,
    From extends string,
    To extends string,
> = Str extends `${infer Prefix}${From}${infer Suffix}`
  ? `${Prefix}${To}${Suffix}` : Str;


type ReplaceAll<
    Str extends string,
    From extends string,
    To extends string
> = Str extends `${infer Left}${From}${infer Right}`
   ? `${Left}${To}${ReplaceAll}`
  : Str;


你可能感兴趣的:(typescript 类型练习之递归)