Всем, привет. Не могу сделать след ситуацию
export interface TableEventMap {
"cell:hover": { start: number; end: number };
test2: number;
}
export const useEmitter = <EM extends Record<string, any>, K extends keyof EM>(event: K) => {
return (payload: EM[K]) => {};
};
const emitTest1 = useEmitter<TableEventMap, "cell:hover">("cell:hover"); // const emitTest1: (payload: { start: number; end: number; }) => void
const emitTest2 = useEmitter<TableEventMap, "test2">("test2"); // const emitTest2: (payload: number) => void
// хочу добиться такого же, но не используя второй аргумент в дженерике
// const emitTest1 = useEmitter('cell:hover');
// const emitTest2 = useEmitter("test2");
// так работает, но идет завязка на TableEventMap, а хотелось бы общий тип оставить
export interface TableEventMap {
"cell:hover": { start: number; end: number };
test2: number;
}
export const useEmitter = <K extends keyof TableEventMap>(event: K) => {
return (payload: TableEventMap[K]) => {};
};
const emitTest1 = useEmitter("cell:hover");
const emitTest2 = useEmitter("test2");
Есть какие-то мысли?