Задать вопрос
@deight

Как задокументировать что аргумент функции может принимать одно значение из ключей объекта?

const values = {
  x: 1,
  y: 2
}
/**
  * @param {'x'|'y'} [key]
  */
function getValue(key) {
  return values[key]
}


Как сделать что бы не надо было при добавлении нового ключа добавлять его в @param
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
RubaXa
@RubaXa
А никак, всё равно какой-то `@typedef` придётся объявить

/**
 * @typedef   {('x' | 'y')}  XValueKeys
 */

function getValue(/** XValueKeys */key) {
  return values[key]
}


В TypeScript/Flow тоже придётся создать interface/type, но с TS было бы красивее и типизация не только на вход, но и выход:

type XValues = {x: number, y: number};

const values: XValue = {x: 1, y: 2};

function getValue<K extends keyof XValues>(key: K): XValues[K] {
  return values[key];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы