এটি ECMAScript ptionচ্ছিক চেইনিং স্পেসিফিকেশনে সংজ্ঞায়িত করা হয়েছে, সুতরাং আমরা যখন এটি আলোচনা করব তখন সম্ভবত আমাদের সম্ভবত optionচ্ছিক শৃঙ্খলা উল্লেখ করা উচিত । সম্ভবত বাস্তবায়ন:
const result = a?.b?.c;
এর একটি দীর্ঘ এবং সংক্ষিপ্তটি হ'ল টাইপস্ক্রিপ্ট টিমটি ইসমাস্ক্রিপ্টের বিশদকরণটি আরও শক্তিশালী হওয়ার জন্য অপেক্ষা করছে, যাতে ভবিষ্যতে তাদের প্রয়োগ বাস্তবায়িত হতে পারে। যদি তারা এখনই কিছু বাস্তবায়িত করে থাকে, তবে ECMAScript তাদের স্পেসিফিকেশনটিকে নতুন করে সংজ্ঞায়িত করলে বড় পরিবর্তনগুলির প্রয়োজন হবে।
Iningচ্ছিক চেইনিংয়ের বিশদ বিবরণ দেখুন
যেখানে কোনও কিছুই মানসম্মত জাভাস্ক্রিপ্ট হতে চলেছে না, টাইপস্ক্রিপ্ট দলটি যথাযথ হিসাবে দেখলে তা প্রয়োগ করতে পারে, তবে ভবিষ্যতের ECMAScript সংযোজনগুলির জন্য, তারা আরও অনেকগুলি বৈশিষ্ট্যের জন্য যেমন প্রাথমিক অ্যাক্সেস দেয় এমনকি তারা শব্দার্থ সংরক্ষণ করতে চায় se
শর্ট কাটস
সুতরাং জাভা স্ক্রিপ্টগুলির সমস্ত মজাদার অপারেটর যেমন ধরণের রূপান্তরগুলি সহ উপলভ্য ...
var n: number = +myString; // convert to number
var b: bool = !!myString; // convert to bool
ম্যানুয়াল সমাধান
তবে আবার প্রশ্নে। আপনি কীভাবে জাভাস্ক্রিপ্টে (এবং তাই টাইপস্ক্রিপ্ট) অনুরূপ কাজটি করতে পারেন তার একটি আবদ্ধ উদাহরণ রয়েছে যদিও আমি অবশ্যই প্রস্তাব দিচ্ছি না যে এটি আপনি যে বৈশিষ্ট্যটির পরে রয়েছেন তেমন একটি করুণ grace
(foo||{}).bar;
তাই আপনি যদি fooহয় undefinedফল undefinedএবং যদি fooসংজ্ঞায়িত করা হয় এবং নামে একজন সম্পত্তি রয়েছে barএকটি মান আছে, ফলে মান।
আমি জেএসফিডেলে একটি উদাহরণ রেখেছি ।
এটি দীর্ঘ উদাহরণগুলির জন্য বেশ স্কেচি দেখায়।
var postCode = ((person||{}).address||{}).postcode;
চেইন ফাংশন
স্পেসিফিকেশনটি এখনও বায়ুতে থাকা অবস্থায় আপনি যদি সংক্ষিপ্ত সংস্করণের জন্য মরিয়া হয়ে থাকেন তবে আমি কিছু ক্ষেত্রে এই পদ্ধতিটি ব্যবহার করি use এটি অভিব্যক্তিটি মূল্যায়ন করে এবং যদি শৃঙ্খলাটি সন্তুষ্ট না হতে পারে বা শূন্য / অপরিজ্ঞাত না হয়ে যায় তবে এটি একটি ডিফল্ট ফিরিয়ে দেয় ( !=এখানে গুরুত্বপূর্ণটি উল্লেখ করুন, আমরা এখানে কিছুটা ইতিবাচক জাগল চাইায় আমরা ব্যবহার করতে চাই না!== )।
function chain<T>(exp: () => T, d: T) {
try {
let val = exp();
if (val != null) {
return val;
}
} catch { }
return d;
}
let obj1: { a?: { b?: string }} = {
a: {
b: 'c'
}
};
// 'c'
console.log(chain(() => obj1.a.b, 'Nothing'));
obj1 = {
a: {}
};
// 'Nothing'
console.log(chain(() => obj1.a.b, 'Nothing'));
obj1 = {};
// 'Nothing'
console.log(chain(() => obj1.a.b, 'Nothing'));
obj1 = null;
// 'Nothing'
console.log(chain(() => obj1.a.b, 'Nothing'));