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?