繁体   English   中英

在 JSDoc 中,如何将参数类型应用为来自对象字符串属性的常量数组的字符串?

[英]In JSDoc, how to apply param type as bunch of strings from a constant array of objects string property?

假设我有一个像这样的 object;

const typesOfIceCreams = [
 {id: "CHOCOLATE", price: 0.49, rating: 4.5},
 {id: "CHERRY", price: 0.54, rating: 4.3},
 {id: "LEMON", price: 0.44, rating: 4.6},
]

我想通过id属性从typesOfIceCreams数组中获取 object 。 所以我有一个像这样的function;

/**
* @param {?} iceCreamId
*/
const getIceCreamById = (iceCreamId) => {
 return typesOfIceCreams.find(iceCream => iceCream.id === iceCreamId);
}

* @params { "CHOCOLATE" | "CHERRY" | "LEMON" } iceCreamId

我本来可以这样写的。 但是每当我想将新的冰淇淋数据添加到数组中时,这很耗时。 我想要类似的东西;

* @params { typesOfIceCreams.map(iceCream => iceCream.id) }

因此,每当我尝试调用getIceCreamById() function 时,我将能够看到这三个选项("CHOCOLATE" | "CHERRY" | "LEMON")

以下应该可以解决问题。 只需将数组转换为const

const typesOfIceCreams = /** @type {const} */([
  {id: "CHOCOLATE", price: 0.49, rating: 4.5},
  {id: "CHERRY", price: 0.54, rating: 4.3},
  {id: "LEMON", price: 0.44, rating: 4.6},
])

/**
* @param {typeof typesOfIceCreams[number]['id']} iceCreamId
*/
const getIceCreamById = (iceCreamId) => {
 return typesOfIceCreams.find(iceCream => iceCream.id === iceCreamId);
}

截屏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM