最佳答案
我试图在我的代码中从 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 中不存在类型转换,只有类型断言,所以它只会告诉编译器一个对象是 x
类型,所以... 我错了吗?什么是执行和确保类型安全的正确方法?