TS-infer关键字
infer
在条件类型中申明泛型,使用infer关键字
有以下两个限制:
- 只能在条件类型的extends子句中使用
- infer得到的类型只能在true语句中使用
申明一个条件类型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
replace
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;
pop
type Pop<T extends any[]> = T extends [...infer I, infer _] ? I : [];
TS-infer关键字
http://yellowcan.top/2022/11/13/ts-infer/