我正在尝试将代码的内容从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中不存在类型转换,只有Type Assertion,所以它只会告诉编译器对象是type x
,所以...我错了吗?强制执行并确保类型安全的正确方法是什么?