This is a similar to question 30360391. I want to express that the parameter of a function is a plain JS object that can have arbitrary properties (with unknown) names but all properties are objects themselves with fixed properties.
An example: The function is just like this
/**
* @param {Descriptor} desc
*/
function foo( desc ) {
// ...
}
and a typical desc
looks like
desc = {
unknownEntity1: {
priority: 5,
writable: false,
},
unknownEntity2: {
priority: 42,
writable: true,
},
unknownEntity3: {
priority: 9,
writable: false,
}
}
I already have
/**
* @typedef {Object} DescriptorEntry
* @property {number} priority - The priority of the entity
* @property {boolean} writable - True, if the entity can be modified
*/
I still need a typedef
for Descriptor
that basically express that Descriptor is an object with arbitrary properties but all of type DescriptorEntry
. As pseudo-code it would be something like
/**
* @typedef {Object} Descriptor
* @property {DescriptorEntry} *
*/
Of course, the asterisk *
as a wildcard for "any property" is invalid Jsdoc syntax. But how do I do it correctly?
for(let key in desc)
. – Lonna