যদি প্রশ্নে থাকা ফাংশনটি কোনও ব্যবহারকারীর সংজ্ঞায়িত শ্রেণীর একটি পদ্ধতি হয়, আপনি রানটাইমে রিটার্ন টাইপ (কনস্ট্রাক্টর ফাংশন) নির্ধারণ করতে মেটাডেটা রিফ্লেক করে পদ্ধতি সজ্জকার ব্যবহার করতে পারেন (এবং এটির সাথে আপনি যেমন উপযুক্ত দেখেন তেমন করুন)।
উদাহরণস্বরূপ, আপনি এটি কনসোলে লগ করতে পারেন:
function logReturnType(
target: Object | Function,
key: string,
descriptor: PropertyDescriptor
): PropertyDescriptor | void {
var returnType = Reflect.getMetadata("design:returntype", target, key);
console.log(returnType);
}
আপনার পছন্দের একটি পদ্ধতিতে কেবল এই পদ্ধতিটি ডেকরেটারকে স্ন্যাপ করুন এবং আপনার কাছে অবজেক্টের কন্সট্রাক্টর ফাংশনের সঠিক রেফারেন্স রয়েছে যা অনুমানিত পদ্ধতি কল থেকে ফিরে এসেছে।
class TestClass {
@logReturnType
public test(): number {
return 42;
}
}
তবে এই পদ্ধতির কয়েকটি উল্লেখযোগ্য সীমাবদ্ধতা রয়েছে:
- আপনাকে যেমন সাজানো কোনও পদ্ধতিতে পরিষ্কারভাবে রিটার্নের ধরণটি সংজ্ঞায়িত করতে হবে, অন্যথায় আপনি এ থেকে সংজ্ঞায়িত হয়ে যাবেন
Reflect.getMetadata
,
- আপনি কেবল প্রকৃত প্রকারগুলিই উল্লেখ করতে পারেন যা সংকলনের পরেও বিদ্যমান; এটি কোনও ইন্টারফেস বা জেনেরিকস নয়
এছাড়াও, আপনাকে টাইপ স্ক্রিপ্ট সংকলকটির জন্য নিম্নলিখিত কমান্ড লাইন আর্গুমেন্টগুলি নির্দিষ্ট করতে হবে, কারণ সজ্জকার এবং মেটাডেটা উভয়ই এই পোস্টটি লেখার ক্ষেত্রে পরীক্ষামূলক বৈশিষ্ট্যগুলি:
--emitDecoratorMetadata --experimentalDecorators