আমি একটি ইন্টারফেসে এক্সপ্রেস (বডি পার্সার মিডলওয়্যার ব্যবহার করে) এর অনুরোধের বডি থেকে আমার কোডে একটি কাস্ট করার চেষ্টা করছি, তবে এটি ধরণের সুরক্ষা প্রয়োগ করছে না।
এটি আমার ইন্টারফেস:
export interface IToDoDto {
description: string;
status: boolean;
};
এই কোডটি যেখানে আমি castালাই করার চেষ্টা করছি:
@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++;
}
ইন্টারফেস সংজ্ঞা মেলে না এমন এমনকি যুক্তিগুলি আমি পাস করতে পারি এবং এই কোডটি ঠিকঠাকভাবে কাজ করবে। আমি প্রত্যাশা করব, রেসপন্স বডি থেকে ইন্টারফেসে castালাই যদি সম্ভব না হয় তবে জাভা বা সি # এর মতো রানটাইমের সময় একটি ব্যতিক্রম ছুঁড়ে ফেলা হবে।
আমি পড়েছি যে টাইপস্ক্রিপ্টে কাস্টিংয়ের অস্তিত্ব নেই, কেবলমাত্র এসেসারেশন টাইপ করুন, সুতরাং এটি কেবলমাত্র সংকলককে বলবে যে কোনও বস্তু টাইপযুক্ত x
, তাই ... আমি কি ভুল করছি? প্রকার সুরক্ষা প্রয়োগ এবং তা নিশ্চিত করার সঠিক উপায় কী?