遇到了一个我无法真正解决的非常有趣的问题。
我想创建一个接受函数对象的函数,并返回具有相同键但返回类型不同的对象(返回类型取决于参数的值。
例如:
declare function add(a: number, b: number): number
declare function str(a: string, b: string): string
declare function createObject(obj)
const result = createObject({
addFn: add,
strFn: str
})
/*
result's TYPE should equal:
{
addFn: [number, (a: number, b: number) => number],
strFn: [string, (a: string, b: string) => string]
}
*/
我认为这似乎可以解决,但我不确定如何解决。我最接近我的分辨率的是以下几行:
type GenericHashTable<T> = { [key in keyof T]: T[key] };
function createAPI<T extends { [k: string]: any }>(fetchers: T) {
const obj: GenericHashTable<T> = fetchers;
return obj;
}
但是此decl不会让我正确更改返回类型。
答案 0 :(得分:1)
看起来您只需要预定义的findOne
条件类型:
ReturnType