Как в React/Redux с Typescript передать в аргумент JSX?

Решил попробовать использовать TS для разработки на React и столкнулся с весьма не понятной мне проблемой.
Хочу пробросить в аргументы action-creator'а модального окна код JSX (чтобы в дальнейшем передавать туда разные view по необходимости), но TS почему то ругается и ведет себя не адекватно.
Аргументирует он это вот этим:

[ts] Тип "boolean" не может быть назначен для типа "Element". [2322]
modal.ts(63, 5): The expected type comes from property 'message' which is declared here on type 'IModalOptions'

Вот код откуда я вызываю action-creator
export const logout = () => {
    return (dispatch: Dispatch<any>) => {
        dispatch({
            type: AUTH_LOGOUT
        });
        dispatch(modalOpen({
            message: <div>TEST</div>
        }));
    }
}

Вот сам action-creator
interface IModalOptions{
    message: JSX.Element;
    isCanClose?: boolean
}
export const modalOpen = ({message, isCanClose = true} : IModalOptions) => {
    return (dispatch: Dispatch<any>) => {
        dispatch({
            type: MODAL_OPEN,
            message,
            isCanClose
        });
    }
}

Пробовал ставить тип any, но это не возымело эффекта.

[ts] Не удается найти имя "div". [2304]

Подскажите пожалуйста как с этим бороться, может быть для этого какой то отдельный тип или надо как-то оборачивать? А возможно это в целом фундаментально не правильная идея кидать JSX в аргументы? На обычном React такая реализация вполне себе работала.
  • Вопрос задан
  • 820 просмотров
Решения вопроса 1
Tirkai
@Tirkai Автор вопроса
Нашел решение сам. Если поменять формат файла с экшеном с .ts на .tsx то div появляется в его контексте и может обрабатываться как JSX.Element или React.ReactNode.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mazhekin
@mazhekin
Frontend, Backend Web Developer
message: '<div>TEST</div>'

Кавычки фундаментально возымеют эффект
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы