#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.