我需要使用JSDoc记录一个ES6类,它接受一个对象,该对象具有键名作为人名的属性,因此键名几乎可以是任何字符串,没有预定义。因此,对象的结构应如下所示:
{
"Name of person": {
"age": 31,
"hobby": "Tennis"
},
"Name of another person": {
"age": 29,
"hobby": "Running"
}
}
所以每个人的名字都是一个关键,但它可以是任何东西,它不是预定义的。我想要记录的一个例子:
class ExampleClass {
/**
* Creates an instance of ExampleClass
* @param {Object} peopleObj - Contains information about people.
* @param {String} peopleObj.name - The name of the person. <----- how should this be documented?
* @param {Number} peopleObj.name.age - The age of the person.
* @param {String} peopleObj.name.hobby - The hobby of the person.
* @memberof ExampleClass
*/
constructor(peopleObj) {
// Do stuff
}
}
我觉得如果我把“peopleObj.name”表示密钥应该是“name”而不是你喜欢的任何名字。那么如何通过让用户知道他可以插入他喜欢的任何名字来记录这个?
修改
对于任何想知道的人,这就是我最终记录这个问题的方法(因为有人关闭了这个问题,所以无法将其添加为答案)。
/**
* Information about a single person.
* @typedef Person
* @type {object}
* @property {number} age - The age of the person.
* @property {string} hobby - The hobby of the person.
*/
class ExampleClass {
/**
* Creates an instance of ExampleClass.
* @param {Object.<string, Person>} peopleObj - Information about people as {@link Person}
* objects where the key is their name.
* @memberof ExampleClass
*/
constructor(peopleObj) {
// Do stuff
}
}
答案 0 :(得分:1)
@type JSDoc文档中介绍了您所描述的内容。
该对象应记录如下:
/**
* @typedef Person
* @type {Object}
* @property {number} age - the person's age
* @property {string} hobby - the person's hobby
*/
/**
* ExampleClass
*/
class ExampleClass {
/**
* Creates a dictionary of people
* @param {Object.<string, Person>} peopleObj - an object with names as keys and Person objects as values.
* @memberof ExampleClass
*/
constructor(peopleObj) {}
}