[英]TypeScript: Is it possible to get the return type of a generic function?
[英]Typescript get generic function's return type
我想獲得fn
的返回類型,這對於我的errorbound
是通用的。
我試過了
type ErrorBound = <Fn extends Function>(Fn) => Promise<ReturnType<typeof Fn> | Error>;
export const errorBound: ErrorBound = async (fn) => {
try {
return await fn();
} catch (e) {
console.error("errorBound!!");
console.error({ e });
return e
}
};
我希望它像
const foo = errorBound(() => 1) // foo is now Promise<number | Error>
但目前foo
是Promise<any>
嘗試這個:
const errorBound = <T>(fn: (...args: any[]) => T): T | Error => {
try {
return fn();
} catch(e) {
console.log({e})
if (!(e instanceof Error)) return new Error(`Not an Error: ${e}`);
return e;
}
}
return await somePromise
它相當於return somePromise
e
並不總是錯誤, throw 10
或throw 'not an Error object'
是有效的 JS,所以我添加了一個檢查type F = <T>(fn: (...args: any[]) => T) => Promise<T | Error> const f: F = async (fn) => { return fn() } const ff = () => Math.random() const n = f(ff) // Promise<number | Error>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.