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

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

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


Как сделать что бы не надо было при добавлении нового ключа добавлять его в @param
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 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];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 10:02
7000 руб./за проект
18 дек. 2024, в 09:56
8000 руб./за проект
18 дек. 2024, в 04:59
1000 руб./в час