获取数组元素的类型 普通函数的返回类型 Promise的返回类型 ()=>Promise的返回类型
获取数组元素的类型 普通函数的返回类型 Promise的返回类型 ()=>Promise的返回类型
获取数组元素的类型
1 | type Unpacked<T> = T extends (infer U)[] ? U : T; |
这段代码的意思是 判断T是不是数组类型 如果是则返回该数组元素的类型 否则返回T
普通函数的返回类型
1 | type Unpacked<T> = T extends (...args: any[]) => infer U ? U : T; |
这段代码的意思是 判断T是不是Function类型 如果是则返回Function return的类型 否则返回T
Promise的返回类型
1 | type Unpacked<T> = T extends Promise<infer U> ? U : T; |
这段代码的意思是 判断T是不是Promise类型 如果是则返回Promise resolve的类型 否则返回T
()=> Promise的返回类型
1 | type Unpacked<T> = T extends (...args: any[]) => Promise<infer U> ? U : T; |
这段代码的意思是 判断T是不是() => Promise类型 如果是则返回Promise resolve的类型 否则返回T
封装为一个通用工具类型
1 | type Unpacked<T> = T extends null | undefined |
注意事项
封装时一定要注意判断顺序 ()=> Promise , Promise 都属于Function 所以要先判断 ()=> Promise 然后是 Promise,再然后是普通 Function
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Big0range!
评论