jsdoc typedef中的动态键

时间:2019-05-20 17:09:10

标签: typescript jsdoc

是否可以在jsdoc typedef中使用动态键(属性名称)?我在想这看起来像下面的示例(不起作用)。

@typedef {Object} Foo
@property {string} bar
@property {*} *

传递typedef e.g. {baz: 0}中未列出的属性会使打字稿不满意,例如

  

'{{bar:string; baz:数字; }”不可分配给“ Foo”类型的参数。     对象文字只能指定已知的属性,而'baz'在'Foo'类型中不存在


 使用@jcalz Object.<string, *>提出的方法似乎更接近理想的输出,但是却导致了奇怪的输出

@typedef {Object} Foo
@property {number} bar
@property {Object.<string, *>}

输出:

type Foo = {
    bar: number;
    (Missing): {
        [x: string]: any;
    };
}

1 个答案:

答案 0 :(得分:1)

您也可以在 JSDOC 中使用普通的 TS 语法。

见下一个例子:

/**
 * 
 * @param {Record<string, string> & {bar:string}} arg
 */
const foo = (arg) => {}

您甚至可以使用实用程序类型:

/**
 * 
 * @param {Partial<{age:number}>} arg 
 */
const partial = (arg) => { }

您可以找到更多实用程序here