Kodumda ekspres bir isteğin gövdesinden (gövde ayrıştırıcı ara yazılım kullanarak) bir arayüze bir döküm yapmaya çalışıyorum, ancak bu tür güvenliğini zorlamıyor.
Bu benim arayüzüm:
export interface IToDoDto {
description: string;
status: boolean;
};
Bu, oyuncu kadrosunu yapmaya çalıştığım kod:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Ve son olarak, çağrılan hizmet yöntemi:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Arayüz tanımıyla eşleşmeye yaklaşmayanlar da dahil olmak üzere her türlü argümanı iletebilirim ve bu kod iyi çalışacaktır. Yanıt gövdesinden arayüze dönüştürme mümkün değilse, Java veya C # gibi çalışma zamanında bir istisna atılmasını beklerdim.
TypeScript çevriminde sadece Type Assertion'ın olmadığını okudum, bu yüzden derleyiciye sadece bir nesnenin tipte olduğunu söyleyecektir x
, yani ... Yanlış mıyım? Tip güvenliğini sağlamanın ve sağlamanın doğru yolu nedir?