আপনি দয়া করে টাইপস্ক্রিপ্ট ভাষা কি বর্ণনা করতে পারেন?
এটি জাভাস্ক্রিপ্ট বা উপলব্ধ গ্রন্থাগারগুলি কী করতে পারে না তা করতে পারে, এটি আমাকে এটি বিবেচনা করার কারণ দেবে?
আপনি দয়া করে টাইপস্ক্রিপ্ট ভাষা কি বর্ণনা করতে পারেন?
এটি জাভাস্ক্রিপ্ট বা উপলব্ধ গ্রন্থাগারগুলি কী করতে পারে না তা করতে পারে, এটি আমাকে এটি বিবেচনা করার কারণ দেবে?
উত্তর:
আমি টাইপস্ক্রিপ্ট তখনও হট অফ-দ্য প্রেসগুলি যখন এই উত্তরটি মূলত লিখেছিলাম। পাঁচ বছর পরে, এটি একটি ঠিক ওভারভিউ, তবে আরও গভীরতার জন্য নীচে লোডেভিজকের উত্তরটি দেখুন
টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপারসেট যা প্রাথমিকভাবে alচ্ছিক স্ট্যাটিক টাইপিং, ক্লাস এবং ইন্টারফেস সরবরাহ করে। এর একটি বড় সুবিধা হ'ল আইডিইগুলি আপনার কোডটি টাইপ করার সাথে সাথে সাধারণ ত্রুটিগুলি চিহ্নিত করার জন্য আরও সমৃদ্ধ পরিবেশ সরবরাহ করতে সক্ষম করা ।
আমি কী বলতে চাইছি তার ধারণা পেতে, ভাষাটিতে মাইক্রোসফ্টের পরিচিতি ভিডিওটি দেখুন ।
একটি বৃহত জাভাস্ক্রিপ্ট প্রকল্পের জন্য, টাইপস্ক্রিপ্ট গ্রহণের ফলে আরও শক্তিশালী সফ্টওয়্যার তৈরি হতে পারে, যেখানে এখনও নিয়মিত জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনটি চালিত হবে সেখানে স্থাপনযোগ্য অবস্থায় রয়েছে while
এটি ওপেন সোর্স, তবে আপনি যদি সমর্থিত আইডিই ব্যবহার করেন তবে টাইপ করার সাথে সাথে কেবল চালাক ইন্টেলিসেন্স পাবেন। প্রথমদিকে, এটি ছিল কেবল মাইক্রোসফ্টের ভিজ্যুয়াল স্টুডিও ( মিগুয়েল ডি ইকাজার ব্লগ পোস্টেও উল্লিখিত )। এই দিনগুলিতে, অন্যান্য আইডিইগুলি টাইপস্ক্রিপ্ট সমর্থনও দেয় ।
আছে CoffeeScript , কিন্তু যে সত্যিই একটি ভিন্ন উদ্দেশ্য করে তোলে। আইএমএইচও, কফিস্ক্রিপ্ট মানুষের জন্য পঠনযোগ্যতা সরবরাহ করে তবে টাইপসক্রিপ্ট তার optionচ্ছিক স্ট্যাটিক টাইপিংয়ের মাধ্যমে সরঞ্জামগুলির জন্য গভীর পাঠযোগ্যতাও সরবরাহ করে (আরও সামান্য সমালোচনার জন্য এই সাম্প্রতিক ব্লগ পোস্টটি দেখুন)। এর রয়েছে ডার্ট কিন্তু যে জাভাস্ক্রিপ্ট প্রতিস্থাপন একটি পূর্ণ করেন (যদিও এটা জাভাস্ক্রিপ্ট কোড তৈরী করতে পারে )
উদাহরণস্বরূপ, এখানে কিছু টাইপস্ক্রিপ্ট (আপনি এটি দিয়ে টাইপস্ক্রিপ্ট প্লেগ্রাউন্ডে খেলতে পারেন )
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
এবং এখানে এটি তৈরি হবে জাভাস্ক্রিপ্ট
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
লক্ষ্য করুন যে কীভাবে টাইপস্ক্রিপ্ট সদস্য ভেরিয়েবল এবং শ্রেণি পদ্ধতি পরামিতিগুলির ধরণ নির্ধারণ করে। এটি জাভাস্ক্রিপ্ট অনুবাদ করার সময় সরানো হয়, তবে আইডিই এবং সংকলক দ্বারা ত্রুটিগুলি যেমন কন্সট্রাক্টরের কাছে একটি সংখ্যার প্রকারকে পাস করার জন্য ব্যবহৃত হয়।
এটি স্পষ্টভাবে ঘোষণা করা হয় না এমন ধরণের ইনফেরিং করতেও সক্ষম, উদাহরণস্বরূপ, এটি greet()
পদ্ধতিটি কোনও স্ট্রিং প্রদান করে তা নির্ধারণ করবে ।
অনেক ব্রাউজার এবং আইডিই সোর্স ম্যাপের মাধ্যমে সরাসরি ডিবাগিং সহায়তা সরবরাহ করে। আরও বিশদের জন্য এই স্ট্যাক ওভারফ্লো প্রশ্নটি দেখুন: ভিজুয়াল স্টুডিওর সাথে টাইপস্ক্রিপ্ট কোডটি ডিবাগ করুন
আমি টাইপস্ক্রিপ্ট তখনও হট অফ-দ্য প্রেসগুলি যখন এই উত্তরটি মূলত লিখেছিলাম। পরীক্ষা করে দেখুন Lodewijk এর উত্তর আরো কিছু বর্তমান বিবরণের জন্য এই প্রশ্নের।
টাইপসক্রিপ্ট জাভাস্ক্রিপ্টের একটি টাইপ করা সুপারসেট যা সাধারণ জাভাস্ক্রিপ্ট - টাইপস্ক্রিপ্টআং.অর্গ.এ সংকলিত ।
জাভাস্ক্রিপ্ট একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা ইএমসিএর টেকনিক্যাল কমিটি 39 দ্বারা বিকাশ করা হয়েছে , যা বিভিন্ন গ্রুপের লোকদের সমন্বয়ে গঠিত একটি গ্রুপ। টিসি 39 হ'ল একটি কমিটি যা ইসিএমএ দ্বারা পরিচালিত : একটি অভ্যন্তরীণ মানক সংস্থা। জাভাস্ক্রিপ্টে অনেকগুলি বিভিন্ন বিক্রেতার (যেমন গুগল, মাইক্রোসফ্ট, ওরাকল ইত্যাদি) বিভিন্ন প্রয়োগ রয়েছে। জাভাস্ক্রিপ্টের লক্ষ্য হ'ল ওয়েবের লিঙ্গুয়া ফ্র্যাঙ্কা।
টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্ট ভাষার একটি সুপারসেট যার একক ওপেন সোর্স সংকলক রয়েছে এবং এটি মূলত একক বিক্রেতার দ্বারা বিকাশ করা হয়: মাইক্রোসফ্ট। টাইপস্ক্রিপ্টের লক্ষ্য হ'ল কোনও টাইপ সিস্টেমের মাধ্যমে ভুলগুলি প্রাথমিকভাবে ধরা এবং জাভাস্ক্রিপ্ট বিকাশকে আরও দক্ষ করে তোলা।
মূলত টাইপস্ক্রিপ্ট তিনটি উপায়ে এর লক্ষ্য অর্জন করে:
আধুনিক জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলির জন্য সমর্থন - জাভাস্ক্রিপ্ট ভাষা (রানটাইম নয়) ECMAScript মানগুলির মাধ্যমে মানক করা হয়েছে। সমস্ত ব্রাউজার এবং জাভাস্ক্রিপ্ট রানটাইমগুলি সমস্ত ইসমাস্ক্রিপ্ট স্ট্যান্ডার্ডের সমস্ত বৈশিষ্ট্যকে সমর্থন করে না (এই সংক্ষিপ্ত বিবরণটি দেখুন )। টাইপসক্রিপ্টটি সর্বশেষতম ECMAScript বৈশিষ্ট্যগুলির ব্যবহারের অনুমতি দেয় এবং সেগুলি আপনার পছন্দের পুরানো ECMAScript লক্ষ্যগুলিতে অনুবাদ করে ( সংকলক বিকল্পের অধীনে সংকলিত লক্ষ্যগুলির তালিকা দেখুন --target
)। এর অর্থ হল আপনি পুরানো ব্রাউজার এবং জাভাস্ক্রিপ্ট রানটাইমের সাথে সামঞ্জস্য রেখে পিছনের দিকে সামঞ্জস্য রেখে মডিউল, ল্যাম্বদা ফাংশন, ক্লাস, স্প্রেড অপারেটর এবং ডেস্ট্রাকচারিংয়ের মতো নতুন বৈশিষ্ট্যগুলি নিরাপদে ব্যবহার করতে পারবেন।
অ্যাডভান্সড টাইপ সিস্টেম - টাইপ সমর্থনটি ECMAScript মানের অংশ নয় এবং সম্ভবত জাভাস্ক্রিপ্টের সংকলিত প্রকৃতির পরিবর্তে ব্যাখ্যা করা প্রকৃতির কারণে কখনও হবে না। টাইপস্ক্রিপ্টের টাইপ সিস্টেমটি অবিশ্বাস্যভাবে সমৃদ্ধ এবং এর মধ্যে রয়েছে: ইন্টারফেস, এনামস, হাইব্রিড প্রকার, জেনেরিক্স, ইউনিয়ন / ছেদ করার ধরণ, অ্যাক্সেস মডিফায়ার এবং আরও অনেক কিছু। অফিসিয়াল ওয়েবসাইট টাইপ করা বিষয় এই বৈশিষ্ট্য একটি ওভারভিউ দেয়। টাইপস্ক্রিপ্টের টাইপ সিস্টেমটি বেশিরভাগ অন্যান্য টাইপ করা ভাষার সাথে সমান এবং কিছু ক্ষেত্রে তর্কাত্মকভাবে আরও শক্তিশালী।
বিকাশকারী সরঞ্জাম সরঞ্জাম সমর্থন - টাইপসক্রিপ্টের সংকলক বর্ধিত সংকলন এবং আইডিই ইন্টিগ্রেশন উভয়কে সমর্থন করার জন্য একটি পটভূমি প্রক্রিয়া হিসাবে চলতে পারে যেমন আপনি আরও সহজেই নেভিগেট করতে পারেন, সমস্যাগুলি সনাক্ত করতে পারেন, সম্ভাবনাগুলি পরীক্ষা করতে পারেন এবং আপনার কোডবেসটিকে রিফেক্টর করতে পারেন।
জাভা স্ক্রিপ্টের সাথে সংকলিত অন্যান্য ভাষার সাথে তুলনা করে টাইপস্ক্রিপ্টের একটি অনন্য দর্শন রয়েছে। জাভাস্ক্রিপ্ট কোড বৈধ টাইপস্ক্রিপ্ট কোড; টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপারসেট। আপনি প্রায় .js
ফাইলগুলিতে নিজের ফাইলটির নাম পরিবর্তন করতে পারেন .ts
এবং টাইপস্ক্রিপ্ট ব্যবহার শুরু করতে পারেন (নীচে "জাভাস্ক্রিপ্ট ইন্টারঅ্যাপেরিবিলিটি" দেখুন)। টাইপস্ক্রিপ্ট ফাইলগুলি জাভাস্ক্রিপ্টকে পঠনযোগ্য হিসাবে সংকলন করা হয়েছে, যাতে মাইগ্রেশন ফিরে পাওয়া সম্ভব হয় এবং সংকলিত টাইপসক্রিপ্ট বোঝা মোটেও কঠিন নয়। টাইপস্ক্রিপ্ট এর দুর্বলতাগুলির উন্নতি করতে গিয়ে জাভাস্ক্রিপ্টের সাফল্যের উপর ভিত্তি করে।
একদিকে, আপনার কাছে ভবিষ্যতের প্রুফ সরঞ্জাম রয়েছে যা আধুনিক ইসমাস্ক্রিপ্ট স্ট্যান্ডার্ড নেয় এবং এটি বাবেল সবচেয়ে জনপ্রিয় হিসাবে পুরানো জাভাস্ক্রিপ্ট সংস্করণে সংকলন করে। অন্যদিকে, আপনার কাছে জাভা স্ক্রিপ্ট থেকে সম্পূর্ণ আলাদা হতে পারে এমন জাভা স্ক্রিপ্ট থেকে সম্পূর্ণ আলাদা হতে পারে যা কফিস্ক্রিপ্ট, ক্লোজার, ডার্ট, এলম, হ্যাক্স, স্কালা.জেএস এবং আরও একটি সম্পূর্ণ হোস্টকে লক্ষ্য করে (এই তালিকাটি দেখুন)। এই ভাষাগুলি যদিও জাভাস্ক্রিপ্টের ভবিষ্যতের যেদিকে যেতে পারে তার চেয়ে সেগুলি আরও ভাল হতে পারে তবে তাদের ভবিষ্যতের গ্যারান্টিযুক্ত হওয়ার জন্য পর্যাপ্ত গ্রহণ না করার আরও বেশি ঝুঁকি রয়েছে। এগুলির কয়েকটি ভাষার জন্য অভিজ্ঞ বিকাশকারীদের খুঁজে পেতে আপনার আরও সমস্যা হতে পারে, তবে আপনি যেগুলি খুঁজে পাবেন এটি প্রায়শই উত্সাহী হতে পারে। জাভাস্ক্রিপ্টের সাথে ইন্টারপও কিছুটা বেশি জড়িত হতে পারে, যেহেতু তারা জাভাস্ক্রিপ্ট আসলে যা থেকে আরও দূরে সরিয়ে ফেলা হয়।
টাইপস্ক্রিপ্ট এই দুটি চরমের মধ্যে বসে, এইভাবে ঝুঁকির ভারসাম্য বজায় রাখে। টাইপসক্রিপ্ট কোনও মানক দ্বারা ঝুঁকিপূর্ণ পছন্দ নয়। আপনি যদি জাভাস্ক্রিপ্টের সাথে পরিচিত হন তবে এটি ব্যবহার করতে খুব কম প্রচেষ্টা দরকার, যেহেতু এটি সম্পূর্ণ আলাদা ভাষা নয়, জাভাস্ক্রিপ্টের আন্তঃব্যবযোগিতা সমর্থন রয়েছে এবং এটি সম্প্রতি প্রচুর গ্রহণ করেছে।
জাভাস্ক্রিপ্ট গতিশীল টাইপ করা হয়। এর অর্থ জাভাস্ক্রিপ্ট আসলে চলমান সময়ে ইনস্ট্যান্ট করা না হওয়া পর্যন্ত কোন পরিবর্তনশীল কী প্রকারের তা জানে না। এর অর্থ এটি খুব দেরিতে হতে পারে। টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টে টাইপ সমর্থন যুক্ত করে। কোনও নির্দিষ্ট ধরণের কিছু ভেরিয়েবলের মিথ্যা অনুমানের কারণে সৃষ্ট বাগগুলি সম্পূর্ণরূপে নির্মূল করা যেতে পারে যদি আপনি নিজের কার্ডগুলি খেলেন (আপনি নিজের কোডটি কতটা কঠোর টাইপ করেন বা আপনি যদি আপনার কোড টাইপ করেন তবে আপনার উপর নির্ভর করে)।
টাইপস্ক্রিপ্ট টাইপ অনুমানের ব্যবহারের মাধ্যমে টাইপিংকে কিছুটা সহজ এবং অনেক কম স্পষ্ট করে তোলে। উদাহরণস্বরূপ: var x = "hello"
টাইপস্ক্রিপ্ট এ একই var x : string = "hello"
। প্রকারটি সহজেই এর ব্যবহার থেকে অনুমিত হয়। এমনকি আপনি স্পষ্টভাবে প্রকারগুলি টাইপ করেন না, অন্যথায় রান-টাইমের ত্রুটির কারণ হতে পারে এমন কিছু করতে আপনাকে বাঁচানোর জন্য তারা এখনও সেখানে রয়েছে।
টাইপস্ক্রিপ্ট ডিফল্টরূপে টাইপ করা হয়। উদাহরণস্বরূপ function divideByTwo(x) { return x / 2 }
, টাইপস্ক্রিপ্টে একটি বৈধ ফাংশন যা কোনও ধরণের প্যারামিটারের সাথে কল করা যেতে পারে , যদিও স্ট্রিং দিয়ে এটিকে কল করা স্পষ্টতই রানটাইম ত্রুটির ফলে ঘটবে । আপনার যেমন জাভাস্ক্রিপ্টে অভ্যস্ত। এটি কাজ করে, কারণ যখন কোনও প্রকার স্পষ্টভাবে নির্ধারিত ছিল না এবং টাইপটি অনুমান করা যায়নি, যেমন বিভাজনপ্রবাহের উদাহরণ হিসাবে, টাইপসক্রিপটি স্পষ্টভাবে টাইপটি বরাদ্দ করবে any
। এর অর্থ ডিভাইডবিওয়াই ফ্যাও ফাংশনের ধরণের স্বাক্ষর স্বয়ংক্রিয়ভাবে হয়ে যায় function divideByTwo(x : any) : any
। এই আচরণ নামঞ্জুর করার জন্য একটি কম্পাইলার পতাকা হল: --noImplicitAny
। এই পতাকাটি সক্ষম করা আপনাকে বৃহত্তর ডিগ্রি সুরক্ষা দেয়, তবে এর অর্থ আপনাকে আরও বেশি টাইপিং করতে হবে।
প্রকারগুলির সাথে তাদের একটি ব্যয় জড়িত। প্রথমত, এখানে একটি শেখার বক্ররেখা রয়েছে এবং দ্বিতীয়ত, যথাযথ কঠোর টাইপিং ব্যবহার করে কোডবেস সেট আপ করতে আপনার আরও কিছুটা সময় ব্যয় করতে হবে। আমার অভিজ্ঞতা হিসাবে, আপনি অন্যদের সাথে ভাগ করে নিচ্ছেন এমন কোনও গুরুতর কোডবেসে এই ব্যয়গুলি সম্পূর্ণরূপে মূল্যবান। গিথুবে প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং কোড কোয়ালিটির একটি বৃহত্তর স্কেল স্টাডি পরামর্শ দেয় যে "সাধারণভাবে স্ট্যাটিকভাবে টাইপ করা ভাষাগুলি গতিশীল ধরণের চেয়ে কম ত্রুটিযুক্ত প্রবণতা, এবং দৃ strong় টাইপিং একই ক্ষেত্রে দুর্বল টাইপিংয়ের চেয়ে ভাল"।
এটি লক্ষণীয় যে এই খুব একই কাগজটিতে টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের চেয়ে কম ত্রুটি-প্রবণ:
ইতিবাচক সহগ সহ তাদের জন্য আমরা আশা করতে পারি যে ভাষাটি সেটারিস পারিবাসের সাথে সম্পর্কিত, বৃহত সংখ্যক ত্রুটি সংশোধন করা। এই ভাষাগুলিতে সি, সি ++, জাভাস্ক্রিপ্ট , উদ্দেশ্য-সি, পিএইচপি এবং পাইথন অন্তর্ভুক্ত রয়েছে। ক্লোজুর, হাস্কেল, রুবি, স্কালা এবং টাইপসক্রিপ্ট , সমস্ত ভাষার নেতিবাচক সহগ রয়েছে যা বোঝায় যে এই ভাষাগুলি ত্রুটি ফিক্সিং কমিটের ফলে গড়ের তুলনায় কম সম্ভাব্য।
টাইপস্ক্রিপ্ট সহ বিকাশের অভিজ্ঞতা জাভাস্ক্রিপ্টের চেয়ে দুর্দান্ত উন্নতি। আইডিই রিয়েল-টাইমে তার সমৃদ্ধ ধরণের তথ্যের উপর টাইপস্ক্রিপ্ট সংকলক দ্বারা অবহিত হয়। এটি বেশ কয়েকটি বড় সুবিধা দেয়। উদাহরণস্বরূপ, টাইপস্ক্রিপ্টের সাহায্যে আপনি নিরাপদে আপনার পুরো কোডবেজ জুড়ে পুনরায় নামকরণের মতো রিফ্যাক্টরিংগুলি করতে পারেন। কোড সমাপ্তির মাধ্যমে, আপনি একটি লাইব্রেরি অফার করতে পারে তার যে কোনও ক্রিয়াকলাপে ইনলাইন সহায়তা পেতে পারেন। তাদের আর স্মরণ করার বা অনলাইন রেফারেন্সগুলিতে সন্ধান করার দরকার নেই। আপনি কোডিংয়ে ব্যস্ত থাকাকালীন সংকলনের ত্রুটিগুলি সরাসরি লাল স্কুইগ্লি লাইনের সাথে আইডিইতে রিপোর্ট করা হয়। সব মিলিয়ে এটি জাভাস্ক্রিপ্টের সাথে কাজ করার তুলনায় উত্পাদনশীলতায় উল্লেখযোগ্য লাভের অনুমতি দেয়। কেউ কোডিংয়ে বেশি সময় এবং ডিবাগ কম সময় ব্যয় করতে পারে।
ভিজুয়াল স্টুডিও কোড, ওয়েবস্টোরম, অ্যাটম এবং সাব্লাইমের মতো টাইপস্ক্রিপ্টের জন্য দুর্দান্ত সমর্থন রয়েছে এমন আইডিইয়ের বিস্তৃত পরিসর রয়েছে।
ফর্মটির রানটাইম ত্রুটিগুলি cannot read property 'x' of undefined
বা undefined is not a function
জাভাস্ক্রিপ্ট কোডে বাগের কারণে খুব সাধারণত হয়। বাক্সের বাইরে টাইপস্ক্রিপ্ট ইতিমধ্যে এই ধরণের ত্রুটিগুলির সম্ভাবনা হ্রাস করে, যেহেতু কেউ এমন কোনও পরিবর্তনশীল ব্যবহার করতে পারে না যা টাইপস্ক্রিপ্ট সংকলক ( any
টাইপড ভেরিয়েবলের বৈশিষ্ট্য বাদে ) ব্যবহার করে না। ভুলভাবে সেট করা একটি ভেরিয়েবলটি ব্যবহার করা সত্ত্বেও এটি সম্ভব undefined
। তবে টাইপস্ক্রিপ্টের ২.০ সংস্করণের সাহায্যে আপনি নন-অ্যালবামযোগ্য প্রকারের ব্যবহারের মাধ্যমে এই ধরণের ত্রুটিগুলি একসাথে মুছে ফেলতে পারেন। এটি নিম্নলিখিত হিসাবে কাজ করে:
কঠোর নাল চেক সক্ষম ( --strictNullChecks
সংকলক পতাকা) দিয়ে টাইপস্ক্রিপ্ট সংকলক undefined
কোনও ভেরিয়েবলের জন্য বরাদ্দ করার অনুমতি দেবে না যতক্ষণ না আপনি স্পষ্টভাবে এটিকে নলাবদ্ধ প্রকারের হিসাবে ঘোষণা করেন না। উদাহরণস্বরূপ, let x : number = undefined
একটি সংকলন ত্রুটির ফলস্বরূপ। এটি টাইপ তত্ত্বের সাথে পুরোপুরি ফিট করে কারণ undefined
কোনও সংখ্যা নয়। এক বর্ণনা করতে পারেন x
একটি সমষ্টি টাইপ করা number
এবং undefined
এই সংশোধন করার: let x : number | undefined = undefined
।
একবার কোনও প্রকারটি নিকলযোগ্য হিসাবে পরিচিত হয়, যার অর্থ এটি এমন এক ধরণের যা এর মূল্যও হতে পারে null
বা undefined
, টাইপস্ক্রিপ্ট সংকলক নিয়ন্ত্রণ কোড প্রবাহ ভিত্তিক প্রকার বিশ্লেষণের মাধ্যমে নির্ধারণ করতে পারে যে আপনার কোডটি নিরাপদে কোনও ভেরিয়েবল ব্যবহার করতে পারে কি না। অন্য কথায় আপনি যখন কোনও ভেরিয়েবল চেক করেন undefined
উদাহরণস্বরূপ একটি if
বিবৃতি টাইপস্ক্রিপ্ট সংকলকটি অনুমান করবে যে আপনার কোডের নিয়ন্ত্রণ প্রবাহের সেই শাখায় থাকা টাইপটি আরও নমনীয় নয় এবং তাই নিরাপদে ব্যবহার করা যেতে পারে। এখানে একটি সহজ উদাহরণ:
let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.
বিল্ড চলাকালীন, ২০১ conference সম্মেলনের টাইপস্ক্রিপ্টের সহ-ডিজাইনার অ্যান্ডারস হেজলসবার্গ এই বৈশিষ্ট্যটির বিশদ ব্যাখ্যা এবং প্রদর্শন করেছেন: ভিডিও (44:30 থেকে 56:30 পর্যন্ত)।
টাইপস্ক্রিপ্ট ব্যবহার করতে আপনার জাভাস্ক্রিপ্ট কোডটি সংকলন করতে একটি বিল্ড প্রক্রিয়া প্রয়োজন। আপনার প্রকল্পের আকারের উপর নির্ভর করে বিল্ড প্রক্রিয়াটি সাধারণত কয়েক সেকেন্ড সময় নেয়। টাইপস্ক্রিপ্ট সংকলক ইনক্রিমেন্টাল সংকলন ( --watch
সংকলক পতাকা) সমর্থন করে যাতে পরবর্তী সমস্ত পরিবর্তনগুলি আরও বেশি গতিতে সংকলন করা যায়।
টাইপস্ক্রিপ্ট সংকলক উত্পন্ন .js ফাইলগুলিতে উত্স মানচিত্রের তথ্য ইনলাইন করতে পারে বা পৃথক। ম্যাপ ফাইল তৈরি করতে পারে। উত্স মানচিত্রের তথ্যগুলি জাভাস্ক্রিপ্টের লাইনগুলিকে টাইপস্ক্রিপ্টে উত্পন্ন করে এমনগুলির সাথে সম্পর্কিত করতে ক্রোম দেবটুলগুলি এবং অন্যান্য আইডিইর মতো ইউটিলিটিগুলি ডিবাগ করে ব্যবহার করা যেতে পারে। এটি আপনার টাইপস্ক্রিপ্ট কোডে সরাসরি রানটাইম চলাকালীন ব্রেকপয়েন্টগুলি সেট করতে এবং ভেরিয়েবলগুলি পরিদর্শন করা সম্ভব করে তোলে। উত্স মানচিত্রের তথ্যগুলি বেশ ভালভাবে কাজ করে, এটি টাইপসক্রিপ্টের অনেক আগে ছিল, তবে টাইপস্ক্রিপ্ট ডিবাগিং সাধারণত জাভাস্ক্রিপ্ট সরাসরি ব্যবহার করার সময় ততটা দুর্দান্ত নয়। this
উদাহরণস্বরূপ কীওয়ার্ডটি নিন । this
ES2015 সাল থেকে ক্লোজারের আশেপাশে কীওয়ার্ডের পরিবর্তিত শব্দার্থক কারণে , this
রানটাইম চলাকালীন সময়ে পরিবর্তিত হিসাবে পরিচিত হতে পারে _this
( এই উত্তরটি দেখুন)। এটি ডিবাগিংয়ের সময় আপনাকে বিভ্রান্ত করতে পারে তবে আপনি যদি জাভা স্ক্রিপ্ট কোডটি সম্পর্কে জানেন বা পরিদর্শন করেন তবে সাধারণত সমস্যা হয় না। এটি লক্ষ করা উচিত যে বাবেল ঠিক একই ধরণের সমস্যায় ভুগছেন।
টাইপস্ক্রিপ্ট সংকলকটি করতে পারে এমন আরও কয়েকটি কৌশল রয়েছে, যেমন সাজসজ্জারগুলির উপর ভিত্তি করে ইন্টারসেপ্টিং কোড উত্পন্ন করা, বিভিন্ন মডিউল সিস্টেমের জন্য মডিউল লোডিং কোড উত্পন্ন করা এবং জেএসএক্স পার্স করা । যাইহোক, আপনার সম্ভবত টাইপস্ক্রিপ্ট সংকলক ছাড়াও একটি বিল্ড সরঞ্জামের প্রয়োজন হবে। উদাহরণস্বরূপ, আপনি যদি নিজের কোডটি সংকুচিত করতে চান তবে আপনাকে এটি করতে আপনার বিল্ড প্রক্রিয়ায় অন্যান্য সরঞ্জাম যুক্ত করতে হবে।
সেখানে টাইপ করা বিষয় সংকলন জন্য উপলব্ধ প্লাগিন হয় Webpack , Gulp , ঘোঁৎ ঘোঁৎ এবং সেখানে আউট প্রায় কাছাকাছি অন্য কোন জাভাস্ক্রিপ্ট বিল্ড হাতিয়ার। টাইপস্ক্রিপ্ট ডকুমেন্টেশনের বিল্ড সরঞ্জামগুলির সাথে সমস্তটি কভার করে সংহত করার একটি বিভাগ রয়েছে । আপনি আরও বেশি বিল্ড টাইম চেক করতে চান এমন ক্ষেত্রে একটি লিন্টারও পাওয়া যায়। এখানে প্রচুর পরিমাণে বীজ প্রকল্প রয়েছে যা অ্যাংুলার 2, রিঅ্যাক্ট, এম্বার, সিস্টেমজেএস, ওয়েবপ্যাক, গুল্প প্রভৃতি অন্যান্য প্রযুক্তির সাথে একত্রে টাইপস্ক্রিপ্টের সাহায্যে শুরু করবে you
যেহেতু টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের সাথে খুব ঘনিষ্ঠভাবে জড়িত এটির দুর্দান্ত আন্তঃক্রিয়াশীলতা ক্ষমতা রয়েছে তবে টাইপস্ক্রিপ্টে জাভাস্ক্রিপ্ট লাইব্রেরিগুলির সাথে কাজ করার জন্য কিছু অতিরিক্ত কাজ প্রয়োজন। টাইপ করা বিষয় সংজ্ঞা যে টাইপ করা বিষয় কম্পাইলার বুঝতে পারে মতো ফাংশন কল তাই প্রয়োজন হয় _.groupBy
বা angular.copy
বা $.fadeOut
সত্য অবৈধ বিবৃতি নেই। এই ফাংশনগুলির সংজ্ঞাগুলি .d.ts
ফাইলগুলিতে স্থাপন করা হয় ।
সংজ্ঞাটি নিতে পারে এমন সহজতম রূপটি কোনও শনাক্তকারীকে কোনও উপায়ে ব্যবহার করার অনুমতি দেওয়া। উদাহরণস্বরূপ, লোডাশ ব্যবহার করার সময় , একটি একক লাইন সংজ্ঞা ফাইল declare var _ : any
আপনাকে যে কোনও ফাংশনটিতে কল করতে অনুমতি দেবে _
, তবে অবশ্যই, আপনি এখনও ভুল করতে সক্ষম হবেন: _.foobar()
এটি একটি আইনী টাইপস্ক্রিপ্ট কল হবে, তবে অবশ্যই , রান-টাইমে একটি অবৈধ কল। আপনি যদি উপযুক্ত ধরণের সমর্থন এবং কোড সমাপ্তি চান তবে আপনার সংজ্ঞা ফাইলটি আরও সঠিক হওয়া দরকার ( উদাহরণের জন্য লড্যাশ সংজ্ঞা দেখুন )।
এনপিএম মডিউলগুলি যা তাদের নিজস্ব ধরণের সংজ্ঞা দিয়ে প্রাক-প্যাকেজযুক্ত আসে তা টাইপস্ক্রিপ্ট সংকলক ( ডকুমেন্টেশন দেখুন ) দ্বারা স্বয়ংক্রিয়ভাবে বোঝা যায় । বেশিরভাগ ক্ষেত্রে অন্য যে কোনও আধা-জনপ্রিয় জাভাস্ক্রিপ্ট লাইব্রেরি যার নিজস্ব সংজ্ঞা অন্তর্ভুক্ত নেই সেখানে ইতিমধ্যে অন্য এনপিএম মডিউলের মাধ্যমে টাইপ সংজ্ঞা উপলব্ধ করা হয়েছে। এই মডিউলগুলি সঙ্গে "@ ধরনের /" পূর্বে সমাধান এবং একটি গিটহাব সংগ্রহস্থলের নামক থেকে এসেছো? DefinitelyTyped ।
একটি সতর্কতা রয়েছে: টাইপ সংজ্ঞাগুলি আপনার রান-টাইমে ব্যবহৃত লাইব্রেরির সংস্করণের সাথে অবশ্যই মিলবে। যদি তা না করে তবে টাইপসক্রিপ্ট আপনাকে কোনও ফাংশন কল করতে বা বিদ্যমান কোন ভেরিয়েবলটিকে ডিফারেন্স করতে বা নিষেধ করতে পারে বা আপনাকে কোনও ফাংশন কল করতে বা অস্তিত্বহীন একটি ভেরিয়েবলকে ডেরিফার করতে দেয়, কেবল কারণ টাইপগুলি সংকলন-সময় রান-টাইমের সাথে মেলে না because । সুতরাং আপনি যে লাইব্রেরিটি ব্যবহার করছেন তার সঠিক সংস্করণটির জন্য টাইপ সংজ্ঞাগুলির সঠিক সংস্করণটি লোড করেছেন তা নিশ্চিত করুন।
সত্যি কথা বলতে কি, এটির ক্ষেত্রে সামান্য ঝামেলা রয়েছে এবং এটি আপনি টাইপস্ক্রিপ্টটি না বেছে নেওয়ার অন্যতম কারণ হতে পারে, তবে পরিবর্তে বাবেলের মতো এমন কিছু সন্ধান করুন যা টাইপ সংজ্ঞা পেতে মোটেই ভুগেন না। অন্যদিকে, আপনি কী করছেন তা যদি আপনি জানেন তবে আপনি খুব সহজেই ভুল বা অনুপস্থিত সংজ্ঞা ফাইলগুলির কারণে যে কোনও সমস্যা সমাধান করতে পারেন।
কোন .js
ফাইলটি একটি নাম পালটে যাবে .ts
টাইপ করা বিষয় কম্পাইলার মাধ্যমে ফাইল এবং দৌড়ে চিহ্নগুলি সিন্টেক্সের একটি আউটপুট হিসাবে একই জাভাস্ক্রিপ্ট কোড পাওয়ার জন্য (যদি এটি প্রথম স্থানে চিহ্নগুলি সিন্টেক্সের সঠিক ছিল)। এমনকি টাইপস্ক্রিপ্ট সংকলক সংকলন ত্রুটি পেলে এটি এখনও একটি .js
ফাইল তৈরি করে। এটি পতাকা .js
সহ ইনপুট হিসাবে ফাইলগুলিও গ্রহণ করতে পারে --allowJs
। এটি আপনাকে এখনই টাইপস্ক্রিপ্ট দিয়ে শুরু করতে দেয়। দুর্ভাগ্যক্রমে, সংকলন ত্রুটিগুলি শুরুর দিকে হতে পারে। একটি মনে রাখতে হবে যে এগুলি শো-স্টপিং ত্রুটিগুলি নয় যেমন আপনি অন্য সংকলকগুলির সাথে ব্যবহার করতে পারেন।
কোনও জাভাস্ক্রিপ্ট প্রকল্পকে কোনও টাইপস্ক্রিপ্ট প্রকল্পে রূপান্তর করার সময় প্রথমটিতে সংকলন ত্রুটিগুলি পাওয়া যায় যা টাইপস্ক্রিপ্টের প্রকৃতির দ্বারা অনিবার্য। টাইপসক্রিপটি বৈধতার জন্য সমস্ত কোড পরীক্ষা করে এবং সুতরাং এটি ব্যবহৃত সমস্ত ফাংশন এবং ভেরিয়েবল সম্পর্কে জানতে হবে। সুতরাং এগুলির সকলের জন্য ধরণের সংজ্ঞাগুলি স্থান থাকা দরকার অন্যথায় সংকলন ত্রুটিগুলি ঘটতে বাধ্য। উপরের অধ্যায়ে যেমন উল্লিখিত হয়েছে, কোনও জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের জন্য .d.ts
খুব সহজেই এমন ফাইল রয়েছে যা সংজ্ঞায়িত টাইপযুক্ত প্যাকেজগুলির ইনস্টলেশন সহ সহজেই অর্জিত হতে পারে। তবে এটি এমনও হতে পারে যে আপনি এমন কিছু অস্পষ্ট গ্রন্থাগার ব্যবহার করেছেন যার জন্য কোনও টাইপস্ক্রিপ্ট সংজ্ঞা উপলব্ধ নেই বা আপনি কিছু জাভাস্ক্রিপ্টের আদিমিকে পলিফিল করেছেন। সেক্ষেত্রে সংকলনের ত্রুটিগুলি অদৃশ্য হওয়ার জন্য আপনাকে অবশ্যই এই বিটগুলির জন্য টাইপ সংজ্ঞা সরবরাহ করতে হবে। কেবল একটি .d.ts
ফাইল তৈরি করুন এবং এটি tsconfig.json এর files
অ্যারে অন্তর্ভুক্ত করুন, যাতে এটি সর্বদা টাইপস্ক্রিপ্ট সংকলক দ্বারা বিবেচিত হয়। এটিতে সেই বিটগুলি ঘোষণা করুন যে টাইপস্ক্রিপ্ট টাইপ হিসাবে জানে না any
। একবার আপনি সমস্ত ত্রুটিগুলি মুছে ফেললে আপনি ধীরে ধীরে আপনার প্রয়োজন অনুসারে সেই অংশগুলিতে টাইপিং প্রবর্তন করতে পারেন।
আপনার বিল্ড পাইপলাইনটি কনফিগার করার (পুনরায়) কিছু কাজ বিল্ড পাইপলাইনে টাইপস্ক্রিপ্ট পাওয়ার জন্যও প্রয়োজন হবে। সংকলনের অধ্যায়ে যেমন উল্লেখ করা হয়েছে সেখানে প্রচুর ভাল সংস্থান রয়েছে এবং আমি আপনাকে বীজ প্রকল্পগুলির সন্ধান করতে উত্সাহিত করি যা আপনি কাজ করতে চান এমন সরঞ্জামগুলির সংমিশ্রণটি ব্যবহার করে।
সবচেয়ে বড় বাধা হ'ল লার্নিং কার্ভ। আমি আপনাকে প্রথমে একটি ছোট প্রকল্পের সাথে খেলতে উত্সাহিত করি। এটি কীভাবে কাজ করে, কীভাবে এটি তৈরি করে, কোন ফাইলগুলি ব্যবহার করে, এটি কীভাবে কনফিগার করা হয়, কীভাবে এটি আপনার আইডিইতে কাজ করে, এটি কীভাবে কাঠামোগত হয়, কোন সরঞ্জামগুলি ব্যবহার করে ইত্যাদি দেখুন যখন আপনি জানেন যে কোনও বৃহত জাভাস্ক্রিপ্ট কোডবেসকে টাইপস্ক্রিপ্টে রূপান্তরযোগ্য হবে তুমি কি করছ. Blog২ ঘন্টার মধ্যে k০০ কে লাইনের টাইপ স্ক্রিপ্টে রূপান্তর করার জন্য এই ব্লগটি পড়ুন )। লাফানোর আগে আপনার ভাষাটি ভালভাবে উপলব্ধি হয়ে গেছে তা নিশ্চিত করুন।
টাইপস্ক্রিপ্ট ওপেন সোর্স (অ্যাপাচি 2 লাইসেন্সযুক্ত, গিটহাব দেখুন ) এবং মাইক্রোসফ্ট সমর্থন করে। সি # এর প্রধান স্থপতি আন্ডারস হেজলসবার্গ এই প্রকল্পের নেতৃত্ব দিচ্ছেন। এটি একটি খুব সক্রিয় প্রকল্প; টাইপস্ক্রিপ্ট টিম গত কয়েক বছরে প্রচুর নতুন বৈশিষ্ট্য প্রকাশ করছে এবং অনেক দুর্দান্ত লোক এখনও আসার পরিকল্পনা করছে ( রোডম্যাপটি দেখুন )।
গ্রহণ এবং জনপ্রিয়তা সম্পর্কে কিছু তথ্য:
npm
(অথবা yarn
) install @types/foo
। আপনি আপনার উত্তর আপডেট করতে পারেন?
টাইপস্ক্রিপ্ট CSS এর জন্য কম বা স্যাসের মতো কিছু করে। এগুলি এর দুর্দান্ত সেট, যার অর্থ আপনার দ্বারা লেখা প্রতিটি জেএস কোডটি বৈধ টাইপস্ক্রিপ্ট কোড। এছাড়াও আপনি ভাষাতে এটি যুক্ত করে এমন অন্যান্য গুডি ব্যবহার করতে পারেন, এবং স্থানান্তরিত কোডটি বৈধ জেএস হবে। আপনি নিজের ফলাফলের কোডটি চান সেটিকে আপনি জেএস সংস্করণও সেট করতে পারেন।
বর্তমানে টাইপসক্রিপ্টটি ES2015 এর একটি দুর্দান্ত সেট, তাই নতুন জেএস বৈশিষ্ট্যগুলি শিখতে শুরু করতে এবং আপনার প্রকল্পের প্রয়োজনীয় স্ট্যান্ডার্ডে ট্রান্সপ্লাই করা ভাল পছন্দ হতে পারে।
" টাইপস্ক্রিপ্ট ফান্ডামেন্টালস " - ড্যান ওয়াহলিন এবং জন পাপা দ্বারা নির্মিত একটি বহুবচন ভিডিও কোর্সটি বর্তমানে (মার্চ 25, 2016) টাইপস্ক্রিপ্টের 1.8, টাইপস্ক্রিপ্টের ভূমিকা প্রতিফলিত করার জন্য আপডেট হয়েছে।
আমার কাছে ইন্টেলিসেন্সের সুন্দর সম্ভাবনার পাশাপাশি সত্যিকারের ভাল বৈশিষ্ট্যগুলি হ'ল ক্লাস , ইন্টারফেস , মডিউল , এএমডি বাস্তবায়নের সহজতা এবং আইইয়ের সাথে অনুরোধ করার সময় ভিজ্যুয়াল স্টুডিও টাইপসক্রিপ্ট ডিবাগার ব্যবহারের সম্ভাবনা।
সংক্ষিপ্তসার হিসাবে: যদি উদ্দেশ্য হিসাবে ব্যবহার করা হয় তবে টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্ট প্রোগ্রামিংটিকে আরও নির্ভরযোগ্য এবং সহজ করে তুলতে পারে। এটি পূর্ণ এসডিএলসির তুলনায় জাভাস্ক্রিপ্ট প্রোগ্রামারটির উত্পাদনশীলতা উল্লেখযোগ্যভাবে বাড়িয়ে তুলতে পারে।
ইকমা স্ক্রিপ্ট 5 (ইএস 5) যা সমস্ত ব্রাউজার সমর্থন করে এবং প্রাকপম্পিল করে। ES6 / ES2015 এবং ES / 2016 এই বছর প্রচুর পরিবর্তন নিয়ে এসেছিল যাতে এই পরিবর্তনগুলি পপআপ করতে এর মধ্যে এমন কিছু আছে যার মধ্যে টাইপস্ক্রিপ্ট সম্পর্কে যত্ন নেওয়া উচিত।
• টাইপস্ক্রিপ্ট হ'ল প্রকার -> এর অর্থ প্রতিটি সম্পত্তি এবং পদ্ধতির ডেটাটাইপকে আমাদের সংজ্ঞায়িত করতে হয়। আপনি যদি সি # জানেন তবে টাইপস্ক্রিপ্টটি বোঝা সহজ।
Type প্রকারের স্ক্রিপ্টের বড় সুবিধা হ'ল আমরা প্রযোজনায় যাওয়ার আগে প্রারম্ভিক সম্পর্কিত সমস্যাগুলি সনাক্ত করি। এটি কোনও ধরণের মিল নেই তবে ইউনিট পরীক্ষাগুলি ব্যর্থ হতে দেয় to