Я намагаюся зробити привід у своєму коді з тіла запиту в експрес-форматі (за допомогою проміжного програмного забезпечення body-parser) до інтерфейсу, але це не забезпечує безпеки типу.
Це мій інтерфейс:
export interface IToDoDto {
description: string;
status: boolean;
};
Це код, де я намагаюся зробити акторський склад:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
І нарешті, метод служби, який називається:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Я можу передати будь-які аргументи, навіть ті, які не відповідають визначенню інтерфейсу , і цей код буде чудово працювати. Я би очікував, що якщо приведення з тіла відповіді до інтерфейсу неможливе, то під час виконання, як Java або C #, буде створено виняток.
Я читав, що в TypeScript кастинг не існує, існує лише твердження типу, тому він лише повідомляє компілятору, що об’єкт має тип x
, тож ... Я помиляюся? Який правильний спосіб забезпечити та забезпечити безпеку типу?