টাইপস্ক্রিপ্ট সংকলক ত্রুটি সত্ত্বেও কেন আমার প্রতিক্রিয়া নেটিভ অ্যাপ্লিকেশন সফলভাবে তৈরি করতে পারে?


15

আমি সম্প্রতি এক্সপো দিয়ে টাইপস্ক্রিপ্ট ব্যবহার শুরু করেছি। আমি সমস্ত লিটার / ফর্ম্যাটর সংহতগুলি করেছি typescript-eslintতাই কোডিংয়ের সময় আমি বেশিরভাগ ত্রুটি ধরতে পারি। কোডটি কম্পাইল করে কিনা তা পরীক্ষা করতে আমি npx tscএকবারে একবারে চালাচ্ছি এবং সে অনুযায়ী ঠিক করে ফেলছি।

একটি জিনিস যা আমি এখনও পুরোপুরি উপলব্ধি করতে পারি নি তা হ'ল কেন আমার অ্যাপ্লিকেশন সফলভাবে বিল্ড করে বহু সংকলন ত্রুটি রয়েছে। আমি আশা করি (এবং পছন্দ করি) অ্যাপটি সফলভাবে তৈরির চেয়ে প্রতিটি সংকলন ত্রুটির জন্য একটি লাল স্ক্রিন ত্রুটি দেখতে পাবে এবং পরে এটি খুঁজে বের করব। উদাহরণ স্বরূপ,

function square<T>(x: T): T {
  console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
  return x * x;
}

একটি সাধারণ টাইপস্ক্রিপ্ট ত্রুটি যা (আমার বিশ্বাস?) সংকলনের সময় সহজেই চেক করা যায়। আমি চাই এটির ফলে একটি বড় লাল পর্দার ত্রুটি হয় এবং বিল্ডটি ব্যর্থ হয়।

আমি টাইপস্ক্রিপ্টে বেশ নতুন তাই এটি সম্ভব যে আমি খুব গুরুত্বপূর্ণ কিছু মিস করছি। এই লেন্সিটি ঠিক কী ঘটছে এবং কঠোর চেক প্রয়োগের কোনও উপায় কি?


"সাফল্যের সাথে বিল্ডস" দ্বারা আপনি কী বোঝাতে চেয়েছেন যে জেএস যাইহোক আউটপুট, বা কোনও সংকলক ত্রুটি বার্তাটি কোনও সময়ে প্রদর্শিত হয়নি?
ecraig12345

2
আমি বলতে চাইছি জেএস যাইহোক আউটপুট এবং আমি অ্যাপটি ডেভ মোডে চালাতে পারি এবং প্রযোজনা অ্যাপটি কোনও সমস্যা ছাড়াই তৈরি করতে পারি। সংকলনের সময় টাইপস্ক্রিপ্টটি প্রতিরোধের জন্য আমার প্রত্যাশা ছিল। কম্পাইলার ত্রুটি বার্তাগুলি আমি চালিত হওয়ার সময় সর্বদা প্রদর্শিত হয় npx tscতবে আমি প্রতিটি টাইপস্ক্রিপ্ট ত্রুটির জন্য যেমন একটি লাল পর্দা পেতে চাই ঠিক তেমনই জেএস ত্রুটির জন্য যেমন করি তবে const n = 23; n.reverse();এই বার্তাটি একটি লাল স্ক্রিনে আসে "এন। রিভার্স কোনও ফাংশন নয় In 'এন। রিভার্স ()', 'এন। রিভার্স' অপরিজ্ঞাত) "
আনার

2
আমি এটি খুব অদ্ভুত মনে। আমি এটির পর্যাপ্ত সমাধানও খুঁজে পাচ্ছি না।
সাইমন বেঙ্গস্টন

উত্তর:


2

প্রথমটি বুঝতে হবে যে টাইপসক্রিপ্টটি জাভাস্ক্রিপ্টের একটি সুপারসেট, এবং এই ক্ষেত্রে এটি সংকলনের সময় প্রকৃতপক্ষে প্রকার পরীক্ষা করা হয় না।

মূলত যা ঘটে তা হ'ল বাবেল কেবলমাত্র টাইপসক্রিপ্টটি আলাদা করে এটিকে জাভাস্ক্রিপ্টে রূপান্তর করে, যা জেএস বান্ডলে সংকলিত হয়।

আপনি নিম্নলিখিত বাবেল ডক্সের প্রথম পংক্তির পাশাপাশি ক্যাভিয়েটগুলি একবার দেখে নিতে পারেন: https://babeljs.io/docs/en/next/babel-plugin-transfor-typescript

যেহেতু বাবেল টাইপ-চেক করে না, কোডটি যা সিন্টেক্সিকভাবে সঠিক, তবে টাইপস্ক্রিপ্ট টাইপ-চেকিংয়ে ব্যর্থ হবে সফলভাবে রূপান্তরিত হতে পারে এবং প্রায়শই অপ্রত্যাশিত বা অবৈধ উপায়ে হতে পারে।

আমি যা পরামর্শ দেব তা হ'ল আপনার বিল্ড কমান্ডটি প্রসারিত করে প্রথমে tscটাইপস্ক্রিপ্ট সংকলনটি অন্তর্ভুক্ত করা হোক, noEmitআপনার tsconfig এ সত্য হিসাবে সেট করা আছে।

আপডেট : আমি যুক্ত করেছি jestএবং typescriptকোনও প্রকল্পে যুক্ত হওয়ার পরে এটি সম্প্রতি প্রয়োগ করা হয় এমন একটি অন্য উদাহরণ আমি পেয়েছি । জাস্ট ডক্সের নীচে তারা আসলে একই জিনিসটি বর্ণনা করে:

https://jestjs.io/docs/en/getting-started#using-typescript

তবে, বাবেলের সাথে টাইপস্ক্রিপ্ট ব্যবহার করার জন্য কয়েকটি ক্যাভেট রয়েছে। বাবেলে টাইপস্ক্রিপ্ট সমর্থনটি প্রতিস্থাপনের কারণে, জাস্ট আপনার পরীক্ষাগুলি চালিত হওয়ার সাথে টাইপ-চেক করবে না। আপনি যদি এটি চান তবে টিএস-জাস্ট ব্যবহার করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.