Приветствую всех, имеется потребность перегрузить функцию как например в kotlin, есть такой код:
type DispatchKey<T> = keyof T;
type DispatchValue<T> = T[DispatchKey<T>];
type InitialState<T> = T | (() => T);
interface Dispatch<T> {
(key: DispatchKey<T>, value: DispatchValue<T>): void;
(keys: (DispatchKey<T>)[], iterator: (key: DispatchKey<T>) => DispatchValue<T>): void;
}
export default function useDispatch<T extends {}>(initialState: InitialState<T>): [T, Dispatch<T>] {
const [state, setState] = useState(initialState);
function dispatch(key: DispatchKey<T>, value: DispatchValue<T>) {
setState((prev) => ({
...prev,
[key]: value,
}));
}
function dispatch(keys: (DispatchKey<T>)[], iterator: (key: DispatchKey<T>) => DispatchValue<T>) {
setState((prev) => {
const updated = keys.map((key) => iterator(key))
console.log(updated);
return prev
});
}
return [state, dispatch];
}
так вот, нужно перегрузить dispatch что бы это были 2 отдельные функции,
я сомневаюсь что нормально будет проверять параметр через всякие if, больно странное занятие да и не особо красиво тогда будет, надеюсь что в typescript вообще можно так перегружать функции как в языках со статической типизацией, буду рад любому ответу