Как описать другие неизвестные свойства в JSDoc

#javascript #jsdoc

Вопрос:

Для функции ниже, как выразить этот параметр foo , он должен иметь свойство bar типа number , но он также может иметь другие свойства.

Я ожидал бы, что ??? приведенный ниже фрагмент может быть заменен содержательным описанием.

 /**
 * @param {{bar: number, ???}} foo
 * @return {{bar: number, ???}} parameter `foo` with incremented property `bar`
 */
function fn(foo) {
    const { bar, ...rest } = foo
    console.log('bar', bar)
    console.log('other unknown properties', rest)

    foo.bar  
    return object
}
 

Ответ №1:

 /**
 * 
 * @param {{bar: number, [p:string]:any}} foo
 * @return {{bar: number, [p:string]:any}}
 */
function fun(foo) {
  const { bar, ...rest } = foo
  console.log('bar', bar)
  console.log('other unknown properties', rest)

  foo.bar  
  return foo
}
 

Комментарии:

1. Привет, не могли бы вы добавить ссылку на документацию JSDoc (jsdoc.app)? Я не могу найти его там. Похоже, это связано с машинописным текстом — typescriptlang.org/docs/handbook/.

2. Поток, похоже, также использует тот же синтаксис ( flow.org/en/docs/types/objects/#toc-objects-as-maps ) однако моя среда разработки отвергает его как недопустимый синтаксис.

3. @czerny Да, это связано с машинописным текстом. И отлично работает в VSCode.