बंद-संकलक के शीर्ष में रखते JSDoc annotations के एक सबसेट का उपयोग करता है (और अपनी खुद की कुछ कहते हैं)। पूर्ण सेट के लिए annotation reference for the compiler देखें। एक जेएसडीओसी एनोटेशन जावाडॉक एनोटेशन के समान है और एक टिप्पणी ब्लॉक है जो /**
(दो सितारों) से शुरू होता है। हालांकि टिप्पणी की प्रत्येक पंक्ति अक्सर अपने *
के साथ शुरू होती है, यह एक ऐसा सम्मेलन है जिसकी आवश्यकता नहीं है। प्रति पंक्ति केवल एक JSDoc टैग की अनुमति है, लेकिन टैग के लिए तर्क कई पंक्तियों का विस्तार कर सकते हैं।
एनोटेशन आमतौर पर निम्नलिखित कथन पर लागू होता है। यहाँ कुछ उदाहरण हैं:
चर
/** @type {string} */ var a;
प्रकार कास्ट
var b = /** @type {string} */ (window['foo']);
टिप्पणी अतिरिक्त कोष्ठक
नाम समारोह
/**
* @param {string} bar
* @return {boolean}
*/
function foo(bar) { return true; }
फंक्शन (यूनियनों, और रिकॉर्ड प्रकार सहित)
/** @type {function(string):boolean} */
var foo = function(bar) { return true; }
var foo2 =
/**
* @param {string} bar
* @return {boolean}
*/
function(bar) { return true; }
typedef
परिसर प्रकार सुविधा और रख-रखाव के लिए एक typedef प्रयोग करने के लिए किया जा सकता है एलियास भाव। ये एनोटेशन लंबे हो सकते हैं, लेकिन पठनीयता के लिए कई लाइनों पर विभाजित किया जा सकता है।
/** @typedef {{
* foo:string,
* bar:number,
* foobar:number|string
* }}
*/
var mytype;
आपके मूल उदाहरण के लिए, ऐसे फ़ंक्शन रिटर्न मान को एनोटेट करने के कई संभावित तरीके हैं।
/** @return {{username:string, password:string, enabled:boolean}} */
function() {
return {
username: 'username',
password: 'password',
enabled: true
}
}
नोट अतिरिक्त {}
: सबसे विशिष्ट और अभी भी सुविधाजनक में से एक रिकॉर्ड प्रकार है। यह भी ध्यान रखें कि रिकॉर्ड प्रकार संपत्ति नामकरण को रोक नहीं पाएंगे।
यह एनोटेशन संकलक को बताता है कि फ़ंक्शन username
, password
और enabled
गुणों के साथ एक अज्ञात प्रकार देता है। अन्य वैध विकल्प कहीं और एक इंटरफ़ेस को परिभाषित करना होगा और उस इंटरफ़ेस होने के लिए वापसी मान टाइप करना होगा। कम से कम विशिष्ट एनोटेशन Object
या *
होगा।
संभावित एनोटेशन की विस्तृत श्रृंखला देखने के लिए, extern files in the Compiler project पर एक नज़र डालें।
वापसी प्रकार 'Object' है। आप पैरामीटर के लिए कुछ लाइनों में ऑब्जेक्ट स्ट्रक्चर का वर्णन क्यों नहीं करते? – jwueller
https://developers.google.com/closure/compiler/docs/js-for-compiler#types –
@elusive हां, मैं हमेशा ऐसा कर सकता हूं, बिंदु यह है कि संकलक के पास जानकारी हो सकती है जो यह काम कर सकती है मनुष्यों के पढ़ने के लिए नहीं। – Azder