作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如我通过@name 有一个对象描述:
/**
@name Point
@prop {number} x
@prop {number} y
*/
还有一个对象,其中每个属性都是点:
/**
*
* @type {what?}
*/
var details = {
something: {x:1.1, y: 2.2},
another: {x:1.1, y: 2.2},
theRest: {x:1.1, y: 2.2},
more: {x:1.1, y: 2.2},
yetAnother: {x:1.1, y: 2.2}
};
应该是什么类型?是否可以仅通过属性值设置类型,而无需键?因为我要即时添加/删除属性,但所有值将始终为 Point。
是否可以使用jsDoc来描述?
最佳答案
据我所知,有两种方法可以在 JSDocs 中定义对象的键和类型。
JSDocs 定义为 usejsdoc.com使用 @property
:
/**
@typedef PropertiesHash
@type {object}
@property {string} id - an ID.
@property {string} name - your name.
@property {number} age - your age.
/
/** @type {PropertiesHash} /
var props;
在谷歌使用时的位置,特别是 Google Closure更喜欢 {{key:(type)}}
结构:
/**
* A typedef to represent a CSS3 transition property. Duration and delay
* are both in seconds. Timing is CSS3 timing function string, such as
* 'easein', 'linear'.
*
* Alternatively, specifying string in the form of '[property] [duration]
* [timing] [delay]' as specified in CSS3 transition is fine too.
*
* @typedef { {
* property: string,
* duration: number,
* timing: string,
* delay: number
* } | string }
*/
goog.style.transition.Css3Property;
要直接回答您的问题,听起来您并不了解所有 key ,因此您必须使用更简单的定义。
/** @type {Object<string, Point>} */
或速记;
/** @type {Object<Point>} */
关于javascript - 如何为这样的对象定义 JSDoc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39896269/
我是一名优秀的程序员,十分优秀!