Solución
solution.tsTypeScript
from contextlib import contextmanager
@contextmanager
def transaction():
# Context manager que simula una transacción
state = {"committed": False, "ops": []}
try:
yield state
# Si llega aquí sin excepción, confirma la transacción
state["committed"] = True
except ValueError:
# Si hay error, committed permanece False
pass
def transactional(operations: list) -> dict:
# Usa el context manager 'transaction' y procesa cada operación
with transaction() as state:
for op in operations:
# Si op es None, lanza ValueError; si no, añádela a state["ops"]
if op is None:
raise ValueError("Value Error")
else:
state["ops"].append(op)
return state0respuestas