কোনও টাইপসক্রিপ্ট প্রতিক্রিয়া প্রয়োগের প্রোপটাইপস


121

React.PropTypesকোনও টাইপস্ক্রিপ্ট প্রতিক্রিয়া অ্যাপ্লিকেশনটি ব্যবহার করে কি এটি "বেল্ট এবং সাসপেন্ডার" এর একটি মামলা?

যেহেতু উপাদান শ্রেণি একটি Propsপ্রকারের প্যারামিটার সহ ঘোষিত হয় :

interface Props {
    // ...
}
export class MyComponent extends React.Component<Props, any> { ... }

যোগ করার কোন সত্যিকারের সুবিধা আছে কি?

static propTypes {
    myProp: React.PropTypes.string
}

ক্লাস সংজ্ঞা?

উত্তর:


104

আপনার উভয় উপাদান প্রপস সাধারণত টাইপস্ক্রিপ্ট প্রকার হিসাবে এবং React.PropTypesএকই সাথে বজায় রাখার জন্য খুব বেশি মূল্য থাকে না ।

এখানে এমন কিছু বিষয় রয়েছে যেখানে এটি করা কার্যকর:

  • কোনও প্যাকেজ প্রকাশ করা যেমন কোনও উপাদান লাইব্রেরি যা প্লেইন জাভাস্ক্রিপ্ট দ্বারা ব্যবহৃত হবে।
  • বাহ্যিক ইনপুট যেমন কোনও এপিআই কল থেকে ফলাফল গ্রহণ করা এবং পাশ করা।
  • কোনও লাইব্রেরি থেকে ডেটা ব্যবহার করা যা পর্যাপ্ত বা সঠিক টাইপিং নাও থাকতে পারে, যদি থাকে।

সুতরাং, সাধারণত এটি আপনার প্রশ্ন সংকলনের সময়কাল যাচাইয়ে আপনি কতটা বিশ্বাস করতে পারেন তা একটি প্রশ্ন।

টাইপস্ক্রিপ্টের নতুন সংস্করণগুলি এখন আপনার React.PropTypes( PropTypes.InferProps) এর উপর ভিত্তি করে প্রকারগুলি নির্ধারণ করতে পারে তবে ফলাফলগুলি আপনার কোডের অন্য কোথাও ব্যবহার করা বা উল্লেখ করা কঠিন হতে পারে।


1
আপনি দয়া করে প্রথম বিবৃতি ব্যাখ্যা করতে পারেন?
ਵਾਹসাকুল

2
@ ওয়েহসাকুল দুঃখিত, স্পষ্টির জন্য, আপনি যদি এমন প্যাকেজটি লিখছেন যা বিকাশকারীরা টাইপস্ক্রিপ্ট ব্যবহার করছেন না তবে ইনস্টল করা হবে তাদের রান-টাইমে ত্রুটি পাওয়ার জন্য প্রপটাইপগুলি এখনও প্রয়োজন। যদি আপনার প্রকল্পটি কেবল নিজের / অন্যান্য টাইপস্ক্রিপ্ট প্রকল্পের জন্য হয় তবে আপনার প্রপসের জন্য টাইপস্ক্রিপ্ট ইন্টারফেসগুলি যথেষ্ট কারণ প্রকল্পটি কেবল নির্মাণ করবে না।
জোয়েল ডে

1
এটি এমন একটি পোকা যা ওয়েবপ্যাক স্তরের github.com/grncdr/ts-react-loader# কিসামগ্রন্থে
borN_free

আমি ওয়ানওফটাইপ চাই - optionচ্ছিক ইউনিয়ন: প্রোপটাইপস.অোনঅফটাইপ ([প্রোপটাইপস.স্ট্রিং, প্রোপাইপস.নম্বার, প্রোপটাইপস.ইনস্ট্যান্স অফ (বার্তা)]), - টাইপ স্ক্রিপ্টের ইউনিয়নের ধরণ রয়েছে তবে তারা আমাকে একই জিনিস দেয় না
এমজেড একজন

1
আমি এটির পাশাপাশি একটি লাইব্রেরি প্রকাশ করেছি: github.com/joelday/ts-proptypes-transformer এটি একটি টাইপস্ক্রিপ্ট সংকলক রূপান্তর হিসাবে বাস্তবায়িত হয়েছে এবং এটি গভীর জেনেরিকস, ইউনিয়ন ইত্যাদির জন্য সঠিক প্রোপাইপগুলি তৈরি করে, যাতে কয়েকটি রুক্ষ প্রান্ত রয়েছে, তাই কোন অবদান দুর্দান্ত হবে।
জোয়েল দিবস

138

টাইপস্ক্রিপ্ট এবং প্রোপটাইপগুলি বিভিন্ন উদ্দেশ্যে পরিবেশন করে। টাইপস্ক্রিপ্ট সংকলন সময়ে প্রকারকে বৈধতা দেয় , যেখানে প্রপটাইপগুলি রানটাইমের সময় পরীক্ষা করা হয়

আপনি কোড লেখার সময় টাইপস্ক্রিপ্ট দরকারী: আপনি যদি আপনার প্রতিক্রিয়া উপাদানগুলিতে ভুল টাইপের একটি যুক্তি পাস করেন, আপনাকে ফাংশন কলগুলির জন্য স্বতঃপূরণ দিলে তা আপনাকে সতর্ক করবে it

প্রোপটাইপগুলি দরকারী যখন আপনি পরীক্ষা করেন যে উপাদানগুলি কীভাবে বাহ্যিক ডেটার সাথে ইন্টারঅ্যাক্ট করে, উদাহরণস্বরূপ যখন আপনি একটি এপিআই থেকে জেএসএন লোড করেন। প্রোপটাইপস আপনাকে ডিবাগ করতে সহায়তা করবে (যখন প্রতিক্রিয়াটির বিকাশ মোডে থাকবেন) কেন আপনার উপাদানগুলি যেমন সহায়ক বার্তা মুদ্রণ করে ব্যর্থ হচ্ছে:

Warning: Failed prop type: Invalid prop `id` of type `number` supplied to `Table`, expected `string`

যদিও টাইপস্ক্রিপ্ট এবং প্রোপটাইপগুলি একই কাজটি করার মতো মনে হলেও এগুলি আসলে মোটেই ওভারল্যাপ হয় না। তবে টাইপসক্রিপ্ট থেকে স্বয়ংক্রিয়ভাবে প্রোপ টাইপগুলি তৈরি করা সম্ভব হয় যাতে আপনাকে দু'বার প্রকার নির্দিষ্ট করতে না হয়, উদাহরণস্বরূপ দেখুন:


প্রোপটাইপস এবং টাইপসক্রিপ্ট প্রকারগুলি কি সহজে সিঙ্ক থেকে বেরিয়ে যায়? আমাদের বলার মতো কারও কি রক্ষণাবেক্ষণের অভিজ্ঞতা আছে?
লিওনার্দো

9
এটা সঠিক উত্তর! প্রোপটাইপস (রান-টাইম) স্ট্যাটিক টাইপ চেকিং (সংকলনের সময়) এর মতো নয়। সুতরাং উভয় ব্যবহার করা 'অর্থহীন অনুশীলন' নয়।
হ্যান্স

1
প্রোপটাইপস থেকে স্থিতিশীল প্রকারগুলি কীভাবে অনুমান করা যায় সে সম্পর্কে এখানে একটি সুন্দর ব্যাখ্যা দেওয়া হয়েছে: dev.to/busypeoples/…
হ্যান্স

রানটাইম বনাম কমপাইল সময় যখন আপনি গরম পুনরায় লোড এবং এসলিন্টের সাথে ভু ক্লাই করেন তখন কোনও অর্থ হয় না। যা সংরক্ষণে ত্রুটি উত্পন্ন করে।
জুলিয়া

1
জুলিয়া, হট রিলোডলোডের রানটাইমের সাথে মিল নেই। এমনকি গরম পুনরায় লোড
দিয়েও

4

আমি অনুমান করি যে কিছু অগোছালো পরিস্থিতিতে প্রপসগুলির টাইপটি সংকলনের সময় অনুমান করা যায় না, তারপরে ব্যবহার থেকে উত্পন্ন যে কোনও সতর্কতাগুলি দেখে এটি কার্যকর হবে propTypes রান টাইমে ।

বাহ্যিক উত্স থেকে ডেটা প্রক্রিয়া করার সময় এমন একটি পরিস্থিতি হবে যার জন্য ধরণের সংজ্ঞা পাওয়া যায় না যেমন আপনার নিয়ন্ত্রণের বাইরে কোনও বাহ্যিক এপিআই। অভ্যন্তরীণ এপিআইগুলির জন্য, আমি মনে করি যে এটি ইতিমধ্যে উপলব্ধ না থাকলে টাইপ সংজ্ঞা লিখার (বা আরও ভাল, উত্পন্ন করা) উত্সাহের উপযুক্ত।

তা ছাড়া, আমি সত্যিই কোনও উপকার দেখতে পাচ্ছি না (যার কারণে আমি এটি ব্যক্তিগতভাবে কখনই ব্যবহার করি নি)।


7
প্রোপটাইপস বৈধতা ডাইম্যানালি লোড হওয়া ডেটা স্ট্রাকচারকে বৈধতা দেওয়ার জন্যও অর্থবোধ করে না (এজেএক্সের মাধ্যমে সার্ভার থেকে আসছে)। প্রোপটাইপগুলি রানটাইম বৈধতা এবং এভাবে ডাবগ স্টাফকে সত্যই সহায়তা করতে পারে। সমস্যাগুলি পরিষ্কার এবং মানব-বান্ধব বার্তাগুলি আউটপুট দেবে।
e1v
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.