Saya mencoba membuat cast dalam kode saya dari tubuh permintaan secara ekspres (menggunakan middleware body-parser) ke antarmuka, tetapi tidak menegakkan keamanan tipe.
Ini adalah antarmuka saya:
export interface IToDoDto {
description: string;
status: boolean;
};
Ini adalah kode tempat saya mencoba melakukan pemeran:
@Post()
addToDo(@Response() res, @Request() req) {
const toDo: IToDoDto = <IToDoDto> req.body; // <<< cast here
this.toDoService.addToDo(toDo);
return res.status(HttpStatus.CREATED).end();
}
Dan terakhir, metode layanan yang dipanggil:
public addToDo(toDo: IToDoDto): void {
toDo.id = this.idCounter;
this.todos.push(toDo);
this.idCounter++;
}
Saya dapat menyampaikan argumen apa pun, bahkan argumen yang tidak cocok dengan definisi antarmuka , dan kode ini akan berfungsi dengan baik. Saya berharap, jika cast dari respon tubuh ke antarmuka tidak memungkinkan, pengecualian akan dilemparkan pada runtime seperti Java atau C #.
Saya telah membaca bahwa di TypeScript casting tidak ada, hanya Type Assertion, jadi itu hanya akan memberitahu compiler bahwa suatu objek bertipe x, jadi ... Apakah saya salah? Apa cara yang tepat untuk menegakkan dan memastikan keamanan tipe?