在TypeScript中,infer是一个关键字,用于在条件类型(conditional types)中推断(infer)类型参数。通过使用infer关键字,我们可以在类型系统中进行类型的自动推断,从而实现更加灵活和可复用的类型定义。
infer关键字通常用于条件类型(conditional types)中,条件类型是TypeScript中的高级类型操作符之一。通过条件类型,我们可以根据某个类型的特性,在类型系统中进行条件分支和类型的变换。
在条件类型中使用infer关键字时,通常会将infer和extends关键字一起使用,下面是几个使用示例:
1. 使用infer关键字获取函数的返回值
其实ts已经给我们提供了ReturnType<T>类型工具,如果传入函数类型则返回函数的返回值类型,如下所示:
let r: ReturnType<() => number> // r的类型就是number
下面我们通过infer关键子也实现一个Return<T>类型工具,达到ReturnType<T>这样同样的效果
type Return<T> = T extends (...args: any[]) => infer U ? U : T
上面如果传入函数类型,则返回函数的返回值类型,否则返回传入的类型