在jsdoc typedef中是否可以有动态键(属性名)?我想象这可能会看起来像下面的例子(但以下并不能工作)。
@typedef {Object} Foo
@property {string} bar
@property {*} *
传递未在类型定义中列出的属性 例如 {baz: 0}
会导致 TypeScript 报错,类似于:
类型“{ bar: string; baz: number; }”的参数不能赋给类型“Foo”的参数。 对象文字只能指定已知属性,并且“baz”不存在于类型“Foo”中
按照 @jcalz 提出的方法使用
Object.<string, *>
看起来更接近理想输出,但结果却非常奇怪@typedef {Object} Foo
@property {number} bar
@property {Object.<string, *>}
输出:
type Foo = {
bar: number;
(Missing): {
[x: string]: any;
};
}
Object.<string,*>
而不是Object
,详见此处。 - jcalz/**@typedef { {[k: string]: any, bar: string } } Foo */
,但这基本上只是使用TypeScript类型语法而不是JSDoc。 - jcalz