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?