এখন টাইপস্ক্রিপ্ট বেরিয়ে এসেছিল, এটি আমার জন্য একটি উত্তেজনাপূর্ণ খবর, তবে কীভাবে আমি বিদ্যমান সমস্ত জাভাস্ক্রিপ্ট ফাইলগুলি টাইপস্ক্রিপ্টে রূপান্তর করতে পারি।
এখন টাইপস্ক্রিপ্ট বেরিয়ে এসেছিল, এটি আমার জন্য একটি উত্তেজনাপূর্ণ খবর, তবে কীভাবে আমি বিদ্যমান সমস্ত জাভাস্ক্রিপ্ট ফাইলগুলি টাইপস্ক্রিপ্টে রূপান্তর করতে পারি।
উত্তর:
আমি ভয় করি এটি খুব সমস্যাযুক্ত হবে। টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপারসেট । এর দ্বারা বোঝা যায় যে সমস্ত বৈধ জাভাস্ক্রিপ্ট কোডটিও বৈধ টাইপস্ক্রিপ্ট কোড। যা ঠিক ভুল। নিম্নলিখিত কোডটি জাভাস্ক্রিপ্টে সঠিক, তবে টাইপস্ক্রিপ্টে একটি ত্রুটি তৈরি করে:
var data={x:5, y:6};
data.z=5;
আপনি "পরিবেষ্টনকারী" হিসাবে ডেটা ঘোষণা করে জাভাস্ক্রিপ্টের গতিশীল আচরণ পেতে পারেন
var data:any={x:5, y:6};
data.z=5;
এখন এটি টাইপস্ক্রিপ্টেও কাজ করবে। তবুও আপনি .js ফাইলের এক্সটেনশনটি .ts এ পরিবর্তন করতে পারেন এবং এই ফাইলটি টাইপস্ক্রিপ্ট সংকলকটিতে পাস করতে পারেন। এটি আমাকে সত্যিই বিভ্রান্ত করেছিল এবং আমি ফ্রাইনেডে টাইপস্ক্রিপ্ট আইআরসি চ্যানেলে প্রশ্নটি জিজ্ঞাসা করি। দেখা গেল যে টাইপসক্রিপ্ট সংকলক বৈধ জাভাস্ক্রিপ্টের জন্য এর ইনপুটটি পরীক্ষা করে এবং কিছু খুঁজে পেলে কিছুই করে না। স্বজ্ঞাতভাবে এটি ভাল শোনাচ্ছে। কেবলমাত্র ফাইল এক্সটেনশানগুলি আপডেট করে আপনি আপনার সমস্ত জাভাস্ক্রিপ্টকে টাইপস্ক্রিপ্টে "রূপান্তর" করতে সক্ষম হবেন এবং যেতে ভাল হবেন। দুর্ভাগ্যক্রমে এটি প্রত্যাশার মতো কাজ করে না। ধরে নেওয়া যাক আপনার এই কোডটি পেয়েছে:
var func=function(n){alert(n)};
var data={x:5};
data.z=6;
সম্পাদনা: আমি কেবল এটি সংকলন করার চেষ্টা করেছি এবং এটি কার্যকর হয় না। আমি দুঃখিত, আমার মনে হয়েছে ভুল হয়েছে: টাইপস্ক্রিপ্ট সংকলক এমনকি খাঁটি জাভাস্ক্রিপ্ট গ্রহণ করে না। আমি কী ভুল হয়েছে তা জানার চেষ্টা করব।
আপনি ফাইল এক্সটেনশনটি .ts এ পরিবর্তন করেছেন এবং আপনার অন্য কোডটিতে ফাংশন ফানক ব্যবহার করেছেন। প্রথমে সবকিছু ঠিকঠাক মনে হলেও তারপরে একটি কুৎসিত বাগ উঠে আসে। আপনি স্থির করেন যে কিছু স্থির ধরণের চেকিং সম্ভবত আপনাকে সহায়তা করবে এবং আপনি কোডটি এতে পরিবর্তন করবেন:
var func=function(n:string){alert(n)};
var data={x:5};
data.z=6;
তবে এখন এটি আর বৈধ জাভাস্ক্রিপ্ট কোড নয় এবং সংকলকটি প্রচুর ত্রুটি বার্তা উত্পন্ন করবে। সব তথ্য পরে কোনও সদস্য "z" নেই। ... এই আচরণটি এড়ানো যেত যদি ডিফল্ট ধরণটি সর্বদা "যে কোনও" থাকে তবে টাইপ অনুমিতিটি সম্পূর্ণ অকেজো।
তাহলে আপনি এই সমস্যাটি কীভাবে সমাধান করবেন? উত্তর: ঘোষণাপত্র ফাইল। আপনি প্রকল্পে আপনার জাভাস্ক্রিপ্ট কোডটি "যেমন আছে" ব্যবহার করতে পারেন এবং কয়েকটি .d.ts ফাইলের সাহায্যে স্থির প্রকারের পরীক্ষা করতে পারেন। তারা জাভাস্ক্রিপ্ট ফাইলে কী কী ভেরিয়েবল, পদ্ধতি এবং "ক্লাস" ঘোষিত হয় সেগুলি সংকলককে জানিয়ে দেয়, তার প্রকারগুলি সহ। অতএব তারা সংকলন-টাইপ ধরণের চেকিং এবং চমত্কার বুদ্ধিমানের জন্য অনুমতি দেয়। আমার উদাহরণের জন্য একটি .d.ts ফাইল হবে
declare var data:any;
declare function func(n:string);
এটি "myjsfile.d.ts" হিসাবে সংরক্ষণ করুন এবং এর সাথে টাইপস্ক্রিপ্টে আমদানি করুন
///<reference path="myjsfile.d.ts"/>
কম্পাইল করা টাইপস্ক্রিপ্টের উপরে আপনার এইচটিএমএল ফাইলে জাভাস্ক্রিপ্ট স্ক্রিপ্ট অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন। এখানে একটি আকর্ষণীয় লিঙ্ক । আপনি "জাভাস্ক্রিপ্টকে টাইপস্ক্রিপ্টে রূপান্তর" বিভাগে আগ্রহী হতে পারেন।
noEmitOnErrorঅবধি বন্ধ থাকবে, তবুও এটি তার প্রতিস্থাপনটি পরিচালনা করতে এবং নির্গত করতে সক্ষম। সুতরাং, এটি ত্রুটিগুলি দেখায় (যা বিরক্তিকর হয়), আপনি আসলে সেই ত্রুটিগুলি উপেক্ষা করতে পারেন এবং সত্ত্বেও টাইপস্ক্রিপ্ট প্রতিস্থাপনটি ব্যবহার করতে পারেন (উদাহরণস্বরূপ, জেএস থেকে টিএসে ধীরে ধীরে রূপান্তরকরণ)। এছাড়াও, কমপক্ষে কিছু ত্রুটি যেমন সুইচগুলির মাধ্যমে noImplicitAny(সম্ভবত সমস্ত, যদিও আইডিকে) অক্ষম করা যেতে পারে ।
আপডেট: সরঞ্জামটি এই পোস্টে বিবরণে বর্ণিত হয়েছে
জাভাস্ক্রিপ্ট কোডটি স্বয়ংক্রিয়ভাবে টাইপস্ক্রিপ্টে রূপান্তর করার জন্য সংস্করণ 9 ( ইএপি বিল্ডগুলি উপলভ্য ) দিয়ে রিসার্চারের কার্যকারিতা রয়েছে। আপনি .js ফাইলটির পুনরায় নামকরণ করে .ts এ পরিবর্তন করতে পারেন এবং আর এর মতো # টি পরামর্শ দেখতে পারেন:

বাস্তব বিশ্বের উদাহরণে এটি চেষ্টা করে দেখেনি। তবে এটি বিপুল সংখ্যক জাভাস্ক্রিপ্ট নিদর্শনকে রূপান্তর করতে সক্ষম।
টার্মিনাল থেকে (ম্যাক):
for f in *.js; do mv $f `basename $f .js`.ts; done;
সমস্ত .js ফাইলকে .ts এ পুনরায় নামকরণ করে
এটি কিছুটা জিভ-ইন-গাল - তবে বেনজামিন জাভাস্ক্রিপ্টের উপরে উল্লিখিত ফাইলগুলি বৈধ টাইপস্ক্রিপ্ট । আপনি যদি নিজের জাভাস্ক্রিপ্টে প্রকার, শ্রেণি, ইন্টারফেস ইত্যাদি যুক্ত করতে চান - আপনার নিজের কোডগুলি এই ধারণাগুলি ব্যবহার করে ডিজাইন করতে এবং পরিবর্তন করতে হবে - এর জন্য খুব কম / কোনও স্বয়ংক্রিয় রূপান্তর নেই।
জিএনইউ সন্ধানী (সর্বাধিক * নিক্স) + বাশ সহ, কেবল করুন:
find -type f -name '*.js' -exec bash -c 'mv "${1}" "${1%???}.ts"' bash {} \;
var a = 5; a = "";