আমি প্রতিক্রিয়া এবং রেডাক্স ব্যবহার করছি এবং ইন্টারফেস হিসাবে নির্দিষ্ট ক্রিয়াকলাপ রয়েছে, যাতে আমার হ্রাসকারীরা উন্নত প্রকারের সুরক্ষার জন্য ট্যাগ ইউনিয়ন ধরণের সুবিধা নিতে পারে।
সুতরাং, আমার কাছে টাইপ ডিক্লেয়ারেশন রয়েছে যা দেখতে এরকম দেখাচ্ছে:
interface AddTodoAction {
type: "ADD_TODO",
text: string
};
interface DeleteTodoAction {
type: "DELETE_TODO",
id: number
}
type TodoAction = AddTodoAction | DeleteTodoAction
আমি এই ক্রিয়াগুলি তৈরি করে এমন সহায়ক ফাংশন তৈরি করতে চাই এবং আমি এর জন্য তীর ফাংশনগুলি ব্যবহার করার প্রবণতা রাখি। আমি যদি এটি লিখি:
export const addTodo1 = (text: string) => ({
type: "ADD_TODO",
text
});
সংকলকটি এটি বৈধ কিনা তা নিশ্চিত করতে কোনও সহায়তা সরবরাহ করতে পারে না AddTodoActionকারণ রিটার্নের ধরণটি স্পষ্টভাবে নির্দিষ্ট করা হয়নি। আমি এটি করে সুস্পষ্টভাবে রিটার্নের ধরণটি নির্দিষ্ট করতে পারি:
export const addTodo2: (text: string) => AddTodoAction = (text: string) => ({
type: "ADD_TODO",
text
})
তবে এটির জন্য আমার ফাংশন যুক্তি দু'বার উল্লেখ করা দরকার, সুতরাং এটি ভার্ভোজ এবং পড়ার পক্ষে আরও শক্ত।
তীর সংকেত ব্যবহার করার সময় আমি কীভাবে স্পষ্টভাবে ফেরতের ধরণটি নির্দিষ্ট করতে পারি?
আমি এটি চেষ্টা করার চিন্তা করেছি:
export const addTodo3 = (text: string) => <AddTodoAction>({
type: "ADD_TODO",
text
})
এই ক্ষেত্রে, সংকলকটি এখন রিটার্নের ধরনটিকে অনুমান করে AddTodoActionতবে এটি যাচাই করে না যে আমি যে বস্তুটি ফিরিয়ে দিচ্ছি তার উপযুক্ত ক্ষেত্রগুলির সমস্ত আছে।
আমি আলাদা ফাংশন সিনট্যাক্সে স্যুইচ করে এটি সমাধান করতে পারলাম:
export const addTodo4 = function(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
export function addTodo5(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
এই পদ্ধতির যে কোনও একটিই সংকলককে সঠিক রিটার্ন টাইপ ব্যবহার করতে বাধ্য করবে এবং প্রয়োগ করবে যে আমি সমস্ত ক্ষেত্র যথাযথভাবে সেট করেছি, তবে সেগুলি আরও ভারবস এবং তারা thisকোনও ফাংশনে পরিচালিত পদ্ধতিতে পরিবর্তন করে (যা কোনও সমস্যা নাও হতে পারে, আমি ধরে নিচ্ছি.)
এটি করার সর্বোত্তম উপায় সম্পর্কে কোনও পরামর্শ আছে?
getTitle = ():string => 'State Lists'