我正在尝试在我的代码中将express请求的正文(使用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 的文档,发现它没有类型转换,只有类型断言,所以...我错了吗?如何才能确保类型安全?