罐头博客在条件类型中申明泛型,使用 infer 关键字
有以下两个限制:
申明一个条件类型 Element,获取数组中元素的类型:
type ElementType<T> = T extends unknown[] ? T[number] : T;
type A = ElementType<number[]>; // number
使用 infer 关键字重写:
type ElementType2<T> = T extends (infer U)[] ? U : T;
type B = ElementType2<number[]>; // number
type Replace<
S extends string,
From extends string,
To extends string
> = From extends ''
? S
: S extends `${infer A}${From}${infer B}`
? `${A}${To}${B}`
: S;
type Pop<T extends any[]> = T extends [...infer I, infer _] ? I : [];