Búsqueda de sitios web

reactjs - Multiplicando por menos 1 en TypeScript + React


Tengo una variable de estado

const [sortDirection, setSortDirection] = useState<1 | -1>(1);

Tengo un botón que puede modificar la variable de estado de esta manera

setSortDirection(sortDirection * -1);

Sin embargo, recibo la advertencia

Argument of type 'number' is not assignable to parameter of type 'SetStateAction<1 | -1>'

¿Cómo debería proceder para implementar esta funcionalidad? El sortDirection solo puede ser -1 o 1, y multiplicar por -1 también debería adherirse a esa regla.

Por supuesto, también estoy abierto a otras implementaciones, no necesito tener sortDirection: 1 | -1.

Respuesta #1

Typescript no puede inferir que sortDirection * -1 siempre será 1 | -1

Pero puedes hacer lo siguiente:

setSortDirection(sortDirection > 0 ? -1 : 1);

Parque infantil

De todos modos, te irá mejor usando un boolean en lugar de este número de 2 estados.