Всем привет.
Пытаюсь создать главную функцию (myFuncAs), а потом побочную (wrapMyFuncAs), принимающую конфиг функции myFuncAs. В конце результат должен быть строкой, так как передал true, но вышло число.
type Obj<T extends boolean = boolean> = {
apply?: T;
};
type MyFunc = (obj?: Obj) => string | number;
type MyFuncAs = ((obj?: Obj<false>) => number) &
((obj?: Obj<true>) => string) &
((obj?: Obj) => number);
const myFunc: MyFunc = obj => {
if (obj?.apply) return "";
return 5;
};
const myFuncAs = myFunc as MyFuncAs;
const wrapMyFuncAs = <T extends boolean>(obj?: Obj<T>) => myFuncAs(obj);
const result = wrapMyFuncAs({ apply: true }); <---- компилятор показывает, что result - число
TS почему-то решает, что актуален только последний оверлоад
((obj?: Obj) => number);
Если я вызову просто myFuncAs, например, вот так:
const result = myFuncAs({ apply: true });
то все хорошо.
Можно ли это как-то фиксануть, чтоб оно работало?