Возможно ли в машинописи выводить параметры функции после изменения формы функционального объекта?
Идея заключается в том, чтобы динамически генерировать типы создателей избыточных действий из параметров функции. Обычно это работает, пока вам не нужно использовать универсальные типы. В приведенном ниже примере я хочу сгенерировать полезную нагрузку действия
export function createActionFactory<
R extends string,
T extends any[],
P extends object
>(type: R, payloadCreator: (...args: T) => P) {
const actionCreator = (...args: T) => {
const payload = payloadCreator(...args);
return { type, payload };
};
// comment to get proper type inference
actionCreator.toString = () => type;
return actionCreator;
}
// Let's assume react component
type ComponentType<P = {}> = { props: P };
const ModalComponent: ComponentType<{ foo: string, closeModal?: () => void }> = { props: { foo: "bar" } };
const show = createActionFactory(
"SHOW",
<T extends { closeModal?: () => void }>(
component: ComponentType<T>,
props: Omit<T, "closeModal">
) => ({ component, props })
);
// should fail as `quz` is not in the props
show(ModalComponent, { quz: "bar" });
Машинопись детская площадка ссылка .