প্রতিক্রিয়া সহ টাইপস্ক্রিপ্ট ব্যবহার করে আমাদের আর সংকলকটি React.Propsজানতে পারে যে সমস্ত প্রতিক্রিয়া উপাদানগুলির প্রপসগুলির বাচ্চা হতে পারে:
interface MyProps { }
class MyComponent extends React.Component<MyProps, {}> {
public render(): JSX.Element {
return <div>{this.props.children}</div>;
}
}
তবে রাষ্ট্রহীন কার্যক্ষম উপাদানগুলির ক্ষেত্রে এটি মনে হয় না:
const MyStatelessComponent = (props: MyProps) => {
return (
<div>{props.children}</div>
);
};
সংকলনের ত্রুটিটি প্রকাশ করে:
ত্রুটি: (102, 17) টিএস 2339: সম্পত্তি 'শিশুদের' টাইপ 'মাইপ্রপস' তে বিদ্যমান নেই।
আমার ধারণা এটি এই কারণ কম্পাইলারের পক্ষে সত্যিকার অর্থে কোনও উপায় নেই যে childrenপ্রপস যুক্তিতে একটি ভ্যানিলা ফাংশন দেওয়া হচ্ছে ।
সুতরাং প্রশ্নটি হল আমরা কীভাবে টাইপসক্রিপ্টে একটি রাজ্যহীন কার্যকারী উপাদানগুলিতে শিশুদের ব্যবহার করব?
আমি পুরানো পথে ফিরে যেতে পারতাম MyProps extends React.Props, তবে Propsইন্টারফেসটি অবচয় হিসাবে চিহ্নিত করা হয়েছে , এবং রাষ্ট্রবিহীন উপাদানগুলি Props.refযেমন বুঝতে পারছে তেমন নেই বা সমর্থন করে না।
সুতরাং আমি childrenম্যানুয়ালি প্রোপটি সংজ্ঞায়িত করতে পারি :
interface MyProps {
children?: React.ReactNode;
}
প্রথম: ReactNodeসঠিক ধরণ?
দ্বিতীয়: আমাকে বাচ্চাগুলিকে alচ্ছিক ( ?) হিসাবে লিখতে হবে বা অন্যথায় গ্রাহকরা ভাবেন যে এটি উপাদান ( ) এর childrenএকটি গুণ হিসাবে বিবেচিত হবে <MyStatelessComponent children={} />এবং মান প্রদান না করা থাকলে একটি ত্রুটি বাড়িয়ে তুলবে ।
মনে হচ্ছে আমি কিছু মিস করছি। আমার শেষ উদাহরণটি প্রতিক্রিয়াযুক্ত শিশুদের সাথে রাষ্ট্রহীন ক্রিয়ামূলক উপাদানগুলি ব্যবহার করার উপায় কিনা সে সম্পর্কে কেউ কি কিছু স্পষ্টতা সরবরাহ করতে পারেন?
@types