Search code examples
javascriptjsdoctsdoc

How to mark a property deprecated in a @typedef?


I would like to mark a property (for example, qux below) as deprecated:

/**
 @typedef {object} Foo
 @property {string} bar
 @property {symbol} qux - How to deprecate it?
 @deprecated @property {symbol} qux2 - Doesn't work
 @property {symbol} qux3 @deprecated - This marks the whole of Foo as deprecated 
 */

I should mention, I'd like to do this in a JSDoc comment, not using TypeScript.


Solution

  • According to Issue#131 over at tsdoc, you can actually use @deprecated on properties, you just have to set it inside the object (works with JS as well).

    For e.g.:

    /**
     * Explain the interface ...
     */
    export interface test {
        /**
         * Foo property
         */
        Foo: string;
        /**
         * @deprecated Use {@link test.qux2} instead.
         */
        qux: string;
        /**
         * qux2 property
         */
        qux2: string;
    }
    

    Results in:

    enter image description here


    In classes for e.g.:

    /**
     * Class description ...
     */
    class User {
        /**
         * Holds user's name
         */
        name = "";
        /**
         * Holds user's surname
         */
        surname = "";
        /**
         * @deprecated Holds user height
         */
        height = 0;
    
        /**
         * constructor
         */
    
        constructor(name, surname) {
            this.name = name;
            this.surname = surname;
        }
    }
    
    const me = new User("Arslan", "Sohail Bano");
    

    Results:

    enter image description here

    When using the deprecated property. enter image description here