Estoy tratando de hacer una conversión en mi código desde el cuerpo de una solicitud en express (usando middleware body-parser) a una interfaz, pero no aplica la seguridad de tipos.
Esta es mi interfaz:
export interface IToDoDto {
description: string;
status: boolean;
};
Este es el código en el que intento hacer el reparto:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Y finalmente, el método de servicio que se llama:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Puedo pasar cualquier argumento, incluso los que no se acercan a la definición de la interfaz , y este código funcionará bien. Esperaría que, si la conversión del cuerpo de respuesta a la interfaz no es posible, se lance una excepción en tiempo de ejecución como Java o C #.
He leído que en TypeScript la conversión no existe, solo Type Assertion, por lo que solo le dirá al compilador que un objeto es de tipo x
, así que ... ¿Me equivoco? ¿Cuál es la forma correcta de hacer cumplir y garantizar la seguridad de tipos?