Je cherche à faire un cast dans mon code à partir du corps d'une requête dans express (en utilisant le middleware body-parser) vers une interface, mais cela n'applique pas la sécurité des types.
Voici mon interface:
export interface IToDoDto {
description: string;
status: boolean;
};
Voici le code où j'essaie de faire le cast:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = req.body; // <<< cast ici
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Et enfin, la méthode de service qui est appelée:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Je peux passer n'importe quels arguments, même ceux qui ne correspondent pas du tout à la définition de l'interface, et ce code fonctionnera très bien. Je m'attendrais à ce que, si le cast du corps de la réponse vers l'interface n'est pas possible, une exception soit lancée à l'exécution comme en Java ou C#.
J'ai lu que en TypeScript, le cast n'existe pas, seulement l'Assertion de Type, donc cela indiquera seulement au compilateur qu'un objet est de type x
, alors... ai-je tort? Quelle est la bonne façon de garantir la sécurité des types ?
1 votes
Veuillez définir " ça ne fonctionne pas". Soyez précis. Y a-t-il une erreur? Laquelle? Au moment de la compilation? Au moment de l'exécution? Que se passe-t-il?
1 votes
Au moment de l'exécution, le code s'exécute normalement, avec n'importe quel objet que je passe.
0 votes
Il n'est pas clair ce que vous demandez
0 votes
Ma question est de savoir comment convertir l'objet entrant en un objet typé. Si la conversion n'est pas possible, lancez une exception à l'exécution, comme Java, C#...
0 votes
Est-ce que cela répond à votre question? TypeScript ou JavaScript type casting