【发布时间】:2022-01-06 14:28:16
【问题描述】:
JSDoc api 说你 can document objects 像这样:
{Object.<string, number>}
并记录多种类型:
{(number|boolean)}
但是,如果我尝试指定一个可以将字符串或数字作为键的对象,它就不起作用。 VSCode/JSDoc 只是将类型报告为“任何”。
VSCode 看不懂:
/**
* Object with string or number for keys
* @param {Object.<(string|number), any>} Container
*/
我也在@typedef 中尝试过,或者在它自己的@typedef 中定义密钥无效。
因为我使用& 来获取intersection 类型(例如{Object.<string, any> & {'foo': number}},所以我不想使用布尔值或说:
/**
* Object with string or number for keys
* @param {(Object.<string, any>|Object.<number, any>) & {'foo': number}} Container
*/
记录的类型最终看起来像:
type Container = ({
[x: string]: any;
} & {
'foo': number;
}) | ({
[x: number]: any;
} & {
'foo': number;
})
这是不必要的冗长。
有没有办法用更简洁的输出来记录这一点?
【问题讨论】:
标签: javascript jsdoc jsdoc3