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 ment, not using TypeScript.
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 ment, not using TypeScript.
Share Improve this question edited Jun 14, 2022 at 17:12 P Varga asked Jun 9, 2022 at 17:35 P VargaP Varga 20.3k13 gold badges77 silver badges118 bronze badges2 Answers
Reset to default 9 +100According 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:
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:
When using the deprecated property.
As far as i know the @deprecated tag can be only used for deprecating anything else than an entire symbol
Following the jsdoc docs this is the only way you can use @deprecated
/**
* @deprecated since version 2.0.0
*/
function old() {
}
https://jsdoc.app/tags-deprecated.html