Как вернуть корректный тип без явного указания в методе:
const makeBoolean = mackeRequest(requestBoolean, true); -> должен вернуть Promise>
const makeNumber = mackeRequest(requestNumber, 10);-> должен вернуть Promise>
Возвращает сейчас Promise>
Пример кода:
class Result<Type = unknown> {
constructor(public data: Type) {}
static ok = (data:any) => {
return new Result(data);
}
static fail = (error: unknown) => {
return new Result(error);
}
}
const requestBoolean = async (arg: boolean): Promise<boolean> => {
return Promise.resolve(arg)
}
const requestNumber = async (arg: number): Promise<number> => {
return Promise.resolve(arg)
}
const mackeRequest = async (callback: (...data: any) => void, ...args: any[]) => {
try {
const result = callback(...args);
return Result.ok(result);
} catch (error) {
return Result.fail(error);
}
}
const makeBoolean = mackeRequest(requestBoolean, true);
const makeNumber = mackeRequest(requestNumber, 10);
Пример добавил в
Playground