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?