Is it possible to have dynamic keys (prop names) in a jsdoc typedef? I'm imagining this would look something like the example below (which does not work).
@typedef {Object} Foo
@property {string} bar
@property {*} *
Passing properties not listed in the typedef e.g. {baz: 0} makes typescript upset with something like,
Argument of type '{ bar: string; baz: number; }' is not assignable to parameter of type 'Foo'. Object literal may only specify known properties, and 'baz' does not exist in type 'Foo'
Using the method proposed by @jcalz
Object.<string, *> seems closer to the ideal output but resulted in a strange output
@typedef {Object} Foo
@property {number} bar
@property {Object.<string, *>}
output:
type Foo = {
bar: number;
(Missing): {
[x: string]: any;
};
}
Object.<string, *>instead ofObject, as mentioned here?Objectin the first line withObject.<string, *>, and that works to add an index signature, but it breaks when you addbar. The only thing I have seen that works is/**@typedef { {[k: string]: any, bar: string } } Foo */, but that's basically just using TypeScript type syntax instead of JSDoc.