Ich versuche, meinen Code vom Text einer Anfrage in Express (mithilfe der Body-Parser-Middleware) in eine Schnittstelle umzuwandeln, erzwingt jedoch keine Typensicherheit.
Dies ist meine Schnittstelle:
export interface IToDoDto {
description: string;
status: boolean;
};
Dies ist der Code, in dem ich versuche, die Besetzung zu machen:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Und schließlich die Servicemethode, die aufgerufen wird:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Ich kann alle Argumente übergeben, auch solche, die nicht annähernd mit der Schnittstellendefinition übereinstimmen , und dieser Code funktioniert einwandfrei. Ich würde erwarten, dass zur Laufzeit eine Ausnahme wie Java oder C # ausgelöst wird, wenn die Umwandlung vom Antworttext in die Schnittstelle nicht möglich ist.
Ich habe gelesen, dass in TypeScript kein Casting vorhanden ist, sondern nur Type Assertion. Daher wird dem Compiler nur mitgeteilt, dass ein Objekt vom Typ x
ist. Also ... irre ich mich? Was ist der richtige Weg, um die Typensicherheit durchzusetzen und zu gewährleisten?