# require-property * [Fixer](#user-content-require-property-fixer) * [Context and settings](#user-content-require-property-context-and-settings) * [Failing examples](#user-content-require-property-failing-examples) * [Passing examples](#user-content-require-property-passing-examples) Requires that all `@typedef` and `@namespace` tags have `@property` tags when their type is a plain `object`, `Object`, or `PlainObject`. Note that any other type, including a subtype of object such as `object`, will not be reported. ## Fixer The fixer for `require-property` will add an empty `@property`. ## Context and settings ||| |---|---| |Context|Everywhere| |Tags|`typedef`, `namespace`| |Recommended|true| ## Failing examples The following patterns are considered problems: ````ts /** * @typedef {object} SomeTypedef */ // Message: Missing JSDoc @property. class Test { /** * @typedef {object} SomeTypedef */ quux () {} } // Message: Missing JSDoc @property. /** * @typedef {PlainObject} SomeTypedef */ // Settings: {"jsdoc":{"tagNamePreference":{"property":"prop"}}} // Message: Missing JSDoc @prop. /** * @namespace {Object} SomeName */ // Message: Missing JSDoc @property. /** * @typedef {{id: string}} Something * * @return {{xyz: Something[]}} */ function foo( abc ) { } // Settings: {"jsdoc":{"tagNamePreference":{"property":false}}} // Message: Cannot prohibit `@property` in the `tagNamePreference` setting while using the `require-property` rule. ```` ## Passing examples The following patterns are not considered problems: ````ts /** * */ /** * @property */ /** * @typedef {Object} SomeTypedef * @property {SomeType} propName Prop description */ /** * @typedef {object} SomeTypedef * @prop {SomeType} propName Prop description */ // Settings: {"jsdoc":{"tagNamePreference":{"property":"prop"}}} /** * @typedef {object} SomeTypedef * @property * // arbitrary property content */ /** * @typedef {object} SomeTypedef */ /** * @typedef {string} SomeTypedef */ /** * @namespace {object} SomeName * @property {SomeType} propName Prop description */ /** * @namespace {object} SomeName * @property * // arbitrary property content */ /** * @typedef {object} SomeTypedef * @property someProp * @property anotherProp This with a description * @property {anotherType} yetAnotherProp This with a type and desc. */ function quux () { } ````