Tôi đang cố gắng truyền mã của mình từ phần thân của một yêu cầu ở dạng express (sử dụng phần mềm trung gian phân tích cú pháp cơ thể) sang một giao diện, nhưng nó không thực thi an toàn kiểu.
Đây là giao diện của tôi:
export interface IToDoDto {
description: string;
status: boolean;
};
Đây là mã mà tôi đang cố gắng truyền:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Và cuối cùng, phương thức dịch vụ đang được gọi:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Tôi có thể chuyển bất kỳ đối số nào, ngay cả những đối số không khớp với định nghĩa giao diện và mã này sẽ hoạt động tốt. Tôi mong đợi, nếu quá trình truyền từ cơ thể phản hồi đến giao diện không thể thực hiện được, thì một ngoại lệ sẽ được đưa ra trong thời gian chạy như Java hoặc C #.
Tôi đã đọc rằng trong truyền TypeScript không tồn tại, chỉ có Type Assertion, vì vậy nó sẽ chỉ cho trình biên dịch biết rằng một đối tượng thuộc loại x
, vì vậy ... Tôi có nhầm không? Cách phù hợp để thực thi và đảm bảo an toàn kiểu là gì?