Argument of type 'string' is not assignable to parameter of type 'SetStateAction '

В компоненте React есть функция, которая вызывается при изменении состояния :

function handleMove(e: React.ChangeEvent<HTMLSelectElement>) {
        setSelected(e.target.value);
        confirmMove(task, e.target.value);
    }

В строке setSelected(e.target.value); IDE выдает ошибку

Argument of type 'string' is not assignable to parameter of type 'SetStateAction '.

Во первых, с каких пор в setState нельзя присваивать string? Во-вторых, я в стейте чётко указал, что стейт может быть типом Property:

const [selected, setSelected] = useState<Priority>('none');

который, в свою очередь, является типом:

export type Priority = 'none' | 'priority1' | 'priority2' | 'priority3' | 'priority4';

который может принимать только строковые значения.

Вот как выглядит компонент, из которого приходит value:

    const Select: React.FC<ISelectProps> = ({ selected, handleChange, width, height }) => {

    return (
        <StyledSelect
            onChange={handleChange}
            value={selected}
            width={width}
            height={height}
        >
            <optgroup label='Срочность'>
                <option value='none'>Не указывать</option>
                <option value='priority1'>(1) Важная срочная</option>
                <option value='priority2'>(2) Важная несрочная</option>
                <option value='priority3'>(3) Неважная срочная</option>
                <option value='priority4'>(4) Неважная несрочная</option>
            </optgroup>
        </StyledSelect>
    );
};

export default React.memo(Select);

Из компонента видно, что значения у selected могут быть только те, которые указаны в типе Priority.

И кстати для этого компонента тоже указан интерфейс для пропс, и в нем тип Priority безотказно работает:

export interface ISelectProps {
    selected: Priority;
    handleChange: (e: React.ChangeEvent<HTMLSelectElement>) => void;
    width?: string;
    height?: string;
}

Ответы (0 шт):