Jsdoc এ "অবজেক্ট" আর্গুমেন্ট কীভাবে বর্ণনা করবেন?


316
// My function does X and Y.
// @params {object} parameters An object containing the parameters
// @params {function} callback The callback function
function(parameters, callback) {
}

তবে আমি কীভাবে বর্ণনা করব যে পরামিতিগুলির অবজেক্টটি কীভাবে কাঠামোযুক্ত করা উচিত? উদাহরণস্বরূপ এটির মতো কিছু হওয়া উচিত:

{
  setting1 : 123, // (required, integer)
  setting2 : 'asdf' // (optional, string)
}

উত্তর:


428

থেকে @param উইকি পাতা :


বৈশিষ্ট্য সহ পরামিতি

যদি কোনও প্যারামিটারের কোনও নির্দিষ্ট সম্পত্তি থাকার কথা বলা হয়, আপনি সেই প্যারামিটারের জন্য @ পেপার ট্যাগের সাথে সাথেই ডকুমেন্ট করতে পারেন, যেমন:

 /**
  * @param userInfo Information about the user.
  * @param userInfo.name The name of the user.
  * @param userInfo.email The email of the user.
  */
 function logIn(userInfo) {
        doLogIn(userInfo.name, userInfo.email);
 }

সেখানে @ কনফিগ ট্যাগ থাকত যা তত্ক্ষণাত্ @Param সম্পর্কিত অনুসরণ করেছিল তবে মনে হয় এটি অবহেলা করা হয়েছে ( উদাহরণস্বরূপ )।


17
দুর্ভাগ্যক্রমে রিটার্নগুলির ট্যাগের সমতুল্য কোড. google.com/p/jsdoc-toolkit/wiki/TagReturns
মাইকেল বাইলস্ট্র্রা

1
এই অনুরূপ উত্তরের stackoverflow.com/a/14820610/3094399 এ তারা শুরুতে @param ject অবজেক্ট} বিকল্পগুলি যুক্ত করেছে। অনুমান যদিও এটি অনর্থক হতে পারে।
প্যাক্ট্রে

ES6 ডেস্ট্রাকচারিং পরামিতিগুলির সাথে আপনার কোনও উদাহরণ আছে? আমার ক্ষেত্রে আমার actionনাম নেই, আমি write foo = ({arg1, arg2, arg2}) => {...} `লিখি` সম্পাদনা করুন: এখানে প্রশ্ন stackoverflow.com/questions/36916790/…
এরিক বুরেল

কোন ধারণা কীভাবে কোনও অবজেক্ট সদস্যকে ডকুমেন্ট করবেন যা বিকল্প? মানে আমার ব্যবহারকারীর অবজেক্টটির ব্যবহারকারীর নাম থাকতে হবে এবং এর পুরো নাম থাকতে পারে। সুতরাং আমি কীভাবে পূর্ণাঙ্গ নামটি isচ্ছিকভাবে নির্দিষ্ট করব
যশ কুমার ভার্মা

167

এখন অবধি পরামিতি / প্রকার হিসাবে ডকুমেন্ট করার জন্য 4 টি বিভিন্ন উপায় রয়েছে। প্রত্যেকের নিজস্ব ব্যবহার রয়েছে। এর মধ্যে কেবল 3 টি রিটার্ন মানগুলি ডকুমেন্ট করতে ব্যবহার করা যেতে পারে।

বৈশিষ্ট্যগুলির একটি পরিচিত সেট সহ বস্তুর জন্য (ভেরিয়েন্ট এ)

/**
 * @param {{a: number, b: string, c}} myObj description
 */

এই বাক্য গঠনটি এমন বস্তুর জন্য আদর্শ যা এই ফাংশনটির জন্য কেবল পরামিতি হিসাবে ব্যবহৃত হয় এবং প্রতিটি সম্পত্তির আরও বিবরণের প্রয়োজন হয় না। এটি পাশাপাশি ব্যবহার করা যেতে পারে@returns

বৈশিষ্ট্যগুলির একটি পরিচিত সেট সহ বস্তুর জন্য (ভেরিয়েন্ট বি)

বৈশিষ্ট্য সিনট্যাক্স সহ পরামিতিগুলি খুব দরকারী :

/**
 * @param {Object} myObj description
 * @param {number} myObj.a description
 * @param {string} myObj.b description
 * @param {} myObj.c description
 */

এই বাক্য গঠনটি এমন বস্তুর জন্য আদর্শ যা এই ফাংশনটির জন্য কেবল পরামিতি হিসাবে ব্যবহৃত হয় এবং প্রতিটি সম্পত্তি সম্পর্কিত আরও বিবরণ প্রয়োজন। এই জন্য ব্যবহার করা যাবে না @returns

উত্সগুলিতে যা উত্সের একাধিক পয়েন্টে ব্যবহৃত হবে

এক্ষেত্রে একটি @typedef খুব কাজে আসে। আপনি আপনার উৎস এক পর্যায়ে টাইপ সংজ্ঞায়িত এবং জন্য একটি ধরন হিসাবে এটি ব্যবহার করতে পারেন @paramবা @returnsবা অন্যান্য JSDoc ট্যাগ করে একটি ধরনের ব্যবহার করতে পারেন।

/**
 * @typedef {Object} Person
 * @property {string} name how the person is called
 * @property {number} age how many years the person lived
 */

তারপরে আপনি এটি কোনও @paramট্যাগে ব্যবহার করতে পারেন :

/**
 * @param {Person} p - Description of p
 */

অথবা একটিতে @returns:

/**
 * @returns {Person} Description
 */

যার মানগুলি একই ধরণের objects

/**
 * @param {Object.<string, number>} dict
 */

প্রথম টাইপ (স্ট্রিং) কীগুলির ধরণটি জাভাস্ক্রিপ্টে সর্বদা একটি স্ট্রিং বা কমপক্ষে সর্বদা একটি স্ট্রিংয়ে জোর করা হবে documents দ্বিতীয় প্রকার (সংখ্যা) হ'ল মানের ধরণ; এটি যে কোনও ধরণের হতে পারে। এই সিনট্যাক্স @returnsপাশাপাশি ব্যবহার করা যেতে পারে ।

সম্পদ

দলিল সংক্রান্ত ধরণের সম্পর্কে দরকারী তথ্য এখানে পাওয়া যাবে:

https://jsdoc.app/tags-type.html

পুনশ্চ:

আপনি ব্যবহার করতে পারেন এমন একটি alচ্ছিক মান দলিল করতে []:

/**
 * @param {number} [opt_number] this number is optional
 */

বা:

/**
 * @param {number|undefined} opt_number this number is optional
 */

ভেরিয়েন্ট 1 কোনও একাধিক প্রকারের সম্পত্তি নিয়ে কাজ করে? পছন্দ {{dir: A|B|C }}?
সিএমসিডিগ্রাগনকাই

এখানে যে কোনও ধরণের টিকা দেওয়া সম্ভব হবে, তাই হ্যাঁ
সাইমন জাইক্স

এবং অবজেক্টগুলির জন্য কার কীগুলি গতিশীলভাবে উত্পন্ন হয়? পছন্দ{[myVariable]: string}
ফ্রেন্ডর

135

আমি দেখতে পাচ্ছি @ রিটার্ন ট্যাগ সম্পর্কে ইতিমধ্যে একটি উত্তর রয়েছে তবে আমি এটি সম্পর্কে আরও বিশদ দিতে চাই।

প্রথমত, সরকারী জেএসডোক 3 ডকুমেন্টেশন আমাদের কাস্টম অবজেক্টের জন্য @ রিটার্ন সম্পর্কে কোনও উদাহরণ দেয় না। দয়া করে https://jsdoc.app/tags-returns.html দেখুন । এখন, কিছু স্ট্যান্ডার্ড উপস্থিত না হওয়া পর্যন্ত আমরা কী করতে পারি তা দেখুন।

  • ফাংশনটি বস্তুটি ফেরত দেয় যেখানে কীগুলি গতিশীলভাবে উত্পন্ন হয়। উদাহরণ: {1: 'Pete', 2: 'Mary', 3: 'John'}। সাধারণত, আমরা সাহায্যের সাহায্যে এই বস্তুর উপরে পুনরাবৃত্তি করি for(var key in obj){...}

    Https://google.github.io/styleguide/javascriptguide.xML#JsTypes অনুসারে সম্ভাব্য জেএসডোক

    /**
     * @return {Object.<number, string>}
     */
    function getTmpObject() {
        var result = {}
        for (var i = 10; i >= 0; i--) {
            result[i * 3] = 'someValue' + i;
        }
        return result
    }
  • ফাংশনটি প্রত্যাবর্তন করে যেখানে কীগুলি ধ্রুবক হিসাবে পরিচিত। উদাহরণ: {id: 1, title: 'Hello world', type: 'LEARN', children: {...}}। আমরা খুব সহজেই এই বস্তুর বৈশিষ্ট্যাবলী অ্যাক্সেস করতে পারে: object.id

    Https://groups.google.com/forum/#!topic/jsdoc-users/TMvUedK9tC4 অনুসারে সম্ভাব্য জেএসডোক

    • জাল এটা.

      /**
       * Generate a point.
       *
       * @returns {Object} point - The point generated by the factory.
       * @returns {number} point.x - The x coordinate.
       * @returns {number} point.y - The y coordinate.
       */
      var pointFactory = function (x, y) {
          return {
              x:x,
              y:y
          }
      }
    • সম্পূর্ণ মন্টি.

      /**
       @class generatedPoint
       @private
       @type {Object}
       @property {number} x The x coordinate.
       @property {number} y The y coordinate.
       */
      function generatedPoint(x, y) {
          return {
              x:x,
              y:y
          };
      }
      
      /**
       * Generate a point.
       *
       * @returns {generatedPoint} The point generated by the factory.
       */
      
      var pointFactory = function (x, y) {
          return new generatedPoint(x, y);
      }
    • একটি প্রকার নির্ধারণ করুন।

      /**
       @typedef generatedPoint
       @type {Object}
       @property {number} x The x coordinate.
       @property {number} y The y coordinate.
       */
      
      
      /**
       * Generate a point.
       *
       * @returns {generatedPoint} The point generated by the factory.
       */
      
      var pointFactory = function (x, y) {
          return {
              x:x,
              y:y
          }
      }

    Https://google.github.io/styleguide/javascriptguide.xML#JsTypes অনুসারে

    • রেকর্ড টাইপ।

      /**
       * @return {{myNum: number, myObject}}
       * An anonymous type with the given type members.
       */
      function getTmpObject() {
          return {
              myNum: 2,
              myObject: 0 || undefined || {}
          }
      }

ইন্টেলিজ / ওয়েবস্টর্মে এটি উত্পন্ন করার কোনও উপায় সম্পর্কে সচেতন কেউ? বিশেষত আমি তৃতীয় বিকল্পের বিষয়ে বলছি - একটি প্রকারের সংজ্ঞা দিন।
এরেজ কোহেন

সম্প্রসারিত করুন. আপনি কি সেই ডকুমেন্ট তৈরি করতে আইডিইতে কিছু হটকি বা শর্টকাট পেতে চান বা আপনার আইডিই সেই ডকুমেন্টটি বুঝতে চান? হয়তো উভয়?
ভোগডিবি

@ ভোগডিবি আপনি দয়া করে এই সমস্যাটি দেখতে পারেন? আমি বিশ্বাস করি যে এই ব্যবহারের কেসটি
পাভেল পলিয়াকভ

পছন্দ করেছেন আপনার প্রশ্নের উত্তর কীভাবে দিতে হবে আমি জানি না। আমি কিছুক্ষণের জন্য জেএসের বাইরে আছি। আপনার কোনও নতুন তথ্য থাকলে আমার উত্তর সম্পাদনা করতে নির্দ্বিধায়।
ভোগডিবি

19

জন্য @returnট্যাগ ব্যবহার {{field1: Number, field2: String}}, দেখুন: http://wiki.servoy.com/display/public/DOCS/Annotating+JavaScript+using+JSDoc


4
মূল লিঙ্কটি কোথাও দরকারী হয় না। আমি বিশ্বাস করি এর নতুন সংস্করণটি এখানে রয়েছে: wiki.servoy.com/display/Serv7/Annotating+ জাভা স্ক্রিপ্ট + ব্যবহার + জেএসডোক
জন ক্রল

2

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

/**
 * Assign the project to a list of employees.
 * @param {Object[]} employees - The employees who are responsible for the project.
 * @param {string} employees[].name - The name of an employee.
 * @param {string} employees[].department - The employee's department.
 */
function(employees) {
    // ...
}

যদি কোনও সুস্পষ্ট নাম ব্যতীত কোনও প্যারামিটারটি তৈরি করা হয় তবে আপনি অবজেক্টটিকে উপযুক্ত একটি দিতে পারেন এবং এর বৈশিষ্ট্যগুলি ডকুমেন্ট করতে পারেন।

/**
 * Assign the project to an employee.
 * @param {Object} employee - The employee who is responsible for the project.
 * @param {string} employee.name - The name of the employee.
 * @param {string} employee.department - The employee's department.
 */
Project.prototype.assign = function({ name, department }) {
    // ...
};

সূত্র: জেএসডক


0

এই @configকেসগুলির জন্য একটি নতুন ট্যাগ রয়েছে। তারা পূর্ববর্তী লিঙ্ক @param

/** My function does X and Y.
    @params {object} parameters An object containing the parameters
    @config {integer} setting1 A required setting.
    @config {string} [setting2] An optional setting.
    @params {MyClass~FuncCallback} callback The callback function
*/
function(parameters, callback) {
    // ...
};

/**
 * This callback is displayed as part of the MyClass class.
 * @callback MyClass~FuncCallback
 * @param {number} responseCode
 * @param {string} responseMessage
 */

1
আপনি @configট্যাগের জন্য ডকুমেন্টেশন নির্দেশ করতে পারেন ? আমি usejsdoc.org তে কিছুই খুঁজে পাইনি এবং এই পৃষ্ঠাটির প্রস্তাবটি হ্রাস@config করা হয়েছে।
ড্যান ড্যাসক্লেস্কু

4
আমি মনে করি @configএই মুহুর্তে অবচয় করা হয়েছে। YIDoc @attributeপরিবর্তে ব্যবহারের পরামর্শ দেয় ।
মাইক ডিসিমোন 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.