考虑我们有如下功能
const upper = (str: string) : string => string.toUpperCase()
我们可以使用获取函数的类型 ReturnType
type Test = ReturnType<typeof upper>
但是现在考虑我们有一个异步功能。
const getUserData = async (uid: string): Promise<{name: string, email: string}> => {
...
};
现在我们如何得到这种类型 {name: string, email: string}
您可以创建AsyncReturnType
具有infer
:
type AsyncReturnType<T extends (...args: any) => Promise<any>> =
T extends (...args: any) => Promise<infer R> ? R : any
测试:
const getUserData = async (uid: string): Promise<{ name: string, email: string }> => {...};
type T1 = AsyncReturnType<typeof getUserData> // { name: string; email: string; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句