interfaceআপনি যখন কোনও বস্তুর আকৃতিটি বর্ণনা করতে চান কেবল তখনই। ইন্টারফেসের জন্য কোনও কোড জেনারেশন নেই, - এগুলি টাইপ সিস্টেমে কেবলমাত্র একটি শিল্পী। কোনও শ্রেণি আছে কি না তার উপর নির্ভর করে কোনও শ্রেণীর জন্য আপনি কোড জেনারেশনে কোনও পার্থক্য দেখতে পাবেন না implements।
declare classআপনি যখন বিদ্যমান ক্লাসটি বর্ণনা করতে চান (সাধারণত একটি টাইপস্ক্রিপ্ট ক্লাস তবে সর্বদা নয়) যা বাহ্যিকভাবে উপস্থিত হতে চলেছে (উদাহরণস্বরূপ, আপনার কাছে দুটি .ts ফাইল রয়েছে যা দুটি .js ফাইলগুলিতে সংকলিত হয় এবং উভয়ই scriptট্যাগের মাধ্যমে অন্তর্ভুক্ত থাকে) একটি ওয়েবপৃষ্ঠায়)। আপনি যদি কোনও classব্যবহার থেকে উত্তরাধিকারী হন extends(বেস টাইপটি declare classএকটি নিয়মিত ছিল কিনা তা নির্বিশেষে class) সংকলক প্রোটোটাইপ চেইন এবং ফরোয়ার্ডিং কনস্ট্রাক্টরগুলি হুক করার জন্য সমস্ত কোড তৈরি করতে চলেছে এবং কী নয়।
যদি আপনি declare classকোনও ইন্টারফেস হওয়া উচিত ছিল যা থেকে উত্তরাধিকারী হওয়ার চেষ্টা করেন , আপনার একটি রানটাইম ত্রুটি হতে চলেছে কারণ সেই উত্পন্ন কোডটি কোনও রানটাইম প্রকাশ ছাড়াই কোনও অবজেক্টের উল্লেখ করবে।
বিপরীতভাবে, যদি আপনি কেবল implementএকটি ইন্টারফেস ছিল যা একটি হওয়া উচিত ছিল declare class, আপনাকে সমস্ত সদস্যদের নিজেই পুনরায় প্রয়োগ করতে হবে এবং বেস কোড এবং ফাংশনগুলি থেকে কোনও কোড পুনরায় ব্যবহারের সুযোগ নেবেন না won't যেটি রানটাইমের সময় প্রোটোটাইপ চেইনটি পরীক্ষা করে তা আপনার অবজেক্টটিকে বাস্তবে বেস শ্রেণীর উদাহরণ না হিসাবে প্রত্যাখ্যান করে।
সত্যই নার্দি পেতে, আপনার যদি সি ++ ব্যাকগ্রাউন্ড থাকে তবে আপনি প্রায় কোনও কন্সট্রাক্টরের interfaceহিসাবে typedefএবং এই সংকলনের ইউনিটে কোনও সংজ্ঞা কঠোরভাবে সংজ্ঞা না থাকার বিষয়ে ঘোষণা declare classহিসাবে ভাবতে পারেন extern।
খাঁটি গ্রাহক পক্ষ থেকে (প্রয়োজনীয় কোড লেখা, নতুন ধরণের যোগ করা নয়), এর মধ্যে একমাত্র পার্থক্য interfaceএবং declare classএটি হ'ল আপনি newকোনও ইন্টারফেস করতে পারবেন না । যাইহোক, আপনি যদি এই extend/ implementপ্রকারগুলির মধ্যে একটির কাছে একটি নতুনভাবে পরিকল্পনা করেন তবে classআপনাকে অবশ্যই একেবারে interfaceএবং এর মধ্যে সঠিকভাবে চয়ন করতে হবে declare class। তাদের মধ্যে একটি মাত্র কাজ করবে will
দুটি নিয়ম যা আপনাকে ভালভাবে পরিবেশন করবে:
- টাইপটির নামটি কি কনস্ট্রাক্টর ফাংশনটির সাথে প্রান্তিককরণ করা হয় (যা কিছু চালানো যেতে পারে
new) যা রানটাইমটিতে আসলে উপস্থিত থাকে (যেমন Date, তবে JQueryStaticতা নয়)? যদি না হয় , আপনি অবশ্যই চানinterface
- আমি কি অন্য টাইপস্ক্রিপ্ট ফাইল থেকে সংকলিত ক্লাসের সাথে কাজ করছি, বা পর্যাপ্তরকম কিছু? যদি হ্যাঁ , ব্যবহার করুন
declare class