Как написать определение jsdoc для объекта, в котором все свойства имеют одинаковую структуру - PullRequest
0 голосов
/ 04 октября 2019

У меня есть структура данных:

/**
 * @typedef {Object} MyCustomType
 * @property {String[]} units
 * @property {String} category
 * @property {String} key
 * @property {String} type
 */

/**
 * @type {Object.<String, MyCustomType>}
 */
export const myObj = map(
  {
    prop1: {
      units: ['unit-1'],
      category: 'category-1',
    },
    prop2: {
      units: ['unit-1', 'unit-2'],
      category: 'category-1',
    },
    // and so on...
  },
  (obj, key) => ({
    ...obj,
    key,
    type: camelCase(key),
  })
);

Все свойства имеют одинаковую структуру, которая описывается пользовательским типом: MyCustomType

Проблема в том, что map() функция вводит в заблуждение IDE, поэтому IDE не может автоматически заполнять myObj свойства.

Есть ли способ улучшить объявление jsdoc таким образом, чтобы в среде IDE можно было корректно автоматически заполнять ключи и свойства?

PS Я знаю, что TypeScript - это решение, но оно выходит за рамкиобъем этого вопроса.

...