উত্তর:
কীওয়ার্ডটি কেবল extendsইন্টারফেস এবং ক্লাসের জন্য ব্যবহার করা যেতে পারে।
আপনি যদি কেবলমাত্র এমন কোনও প্রকারের অতিরিক্ত বৈশিষ্ট্যযুক্ত ঘোষনা করতে চান তবে আপনি ছেদ প্রকারটি ব্যবহার করতে পারেন :
type UserEvent = Event & {UserId: string}
টাইপস্ক্রিপ্ট ২.২ এর জন্য আপডেট করুন , এখন এমন ইন্টারফেস পাওয়া সম্ভব যা অবজেক্টের মতো ধরণের প্রসারিত করে , যদি প্রকারটি কিছু বিধিনিষেধকে সন্তুষ্ট করে:
type Event = {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
এটি অন্যভাবে কাজ করে না - আপনাকে সিন্ট্যাক্স ব্যবহার করতে চাইলে UserEventঅবশ্যই ইন্টারফেস হিসাবে ঘোষণা করতে হবে ।typeextends
এবং এটি extend নির্বিচারে ধরণের সাথে ব্যবহার করা এখনও অসম্ভব - উদাহরণস্বরূপ, Eventকোনও সীমাবদ্ধতা ছাড়াই টাইপ প্যারামিটার হলে এটি কাজ করে না ।
interface A<T> extends B<T> {blar}একটি ইন্টারফেস কেবল স্থায়ীভাবে পরিচিত সদস্যদের সাথে অবজেক্টের ধরণের বা বস্তুর প্রকারের ছেদ বাড়িয়ে দিতে পারে
interface Identifiable<T> extends T { id: string }এটি করে আমাকে ত্রুটি দেয় "একটি ইন্টারফেস কেবল স্থায়ীভাবে পরিচিত সদস্যদের সাথে কোনও অবজেক্টের ধরণের বা ছেদকে প্রসারিত করতে পারে" (2312) "
আপনি প্রকারের ছেদ করতে পারেন:
type TypeA = {
nameA: string;
};
type TypeB = {
nameB: string;
};
export type TypeC = TypeA & TypeB;
আপনার কোডের কোথাও এখন আপনি এটি করতে পারেন:
const some: TypeC = {
nameB: 'B',
nameA: 'A',
};
আপনি যা অর্জন করতে চাইছেন তার সমতুল্য
interface Event {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
আপনি যেভাবে প্রকারগুলি সংজ্ঞায়িত করেছেন তা উত্তরাধিকার নির্দিষ্ট করার জন্য অনুমতি দেয় না, তবে আপনি আর্টমার্কে নির্দেশিত হিসাবে ছেদ ধরনের ব্যবহার করে অনুরূপ কিছু অর্জন করতে পারেন ।
interfaceআমার পছন্দ হয় না যখন আমি আসলে একটি বোঝায়type
typeশব্দ নির্ধারণ করতে ব্যবহৃত হয় টাইপ alias লেখা , না ইন্টারফেসগুলি বা ক্লাস।