मैं अपने कोड में एक्सप्रेस (बॉडी-पार्सर मिडलवेयर का उपयोग करके) एक इंटरफेस के लिए अपने कोड से एक कास्ट करने की कोशिश कर रहा हूं, लेकिन यह प्रकार की सुरक्षा को लागू नहीं कर रहा है।
यह मेरा इंटरफ़ेस है:
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++;
}
मैं जो भी दलीलें पास कर सकता हूं, यहां तक कि जो इंटरफ़ेस की परिभाषा के मिलान के करीब नहीं आते हैं , और यह कोड ठीक काम करेगा। मुझे उम्मीद है, अगर रिस्पांस बॉडी से इंटरफ़ेस तक का कास्ट संभव नहीं है, तो यह अपवाद है कि जावा या सी # जैसे रनटाइम पर फेंक दिया जाएगा।
मैंने पढ़ा है कि टाइपस्क्रिप्ट में कास्टिंग मौजूद नहीं है, केवल टाइप अभिकथन है, इसलिए यह केवल कंपाइलर को बताएगा कि कोई ऑब्जेक्ट टाइप का है x
, इसलिए ... क्या मैं गलत हूं? प्रकार सुरक्षा को लागू करने और सुनिश्चित करने का सही तरीका क्या है?