Express의 요청 본문 (본문 파서 미들웨어 사용)에서 인터페이스로 내 코드를 캐스트하려고 시도하고 있지만 형식 안전성을 적용하지 않습니다.
이것은 내 인터페이스입니다.
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 만 존재한다는 것을 읽었습니다. 그래서 컴파일러에게 객체가 유형임을 알려줍니다. x그래서 ... 내가 틀렸습니까? 형식 안전성을 강화하고 보장하는 올바른 방법은 무엇입니까?