Функция Typescript для работы с объектом хочет получать динамические c ключи и значения разных типов - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть какой-то объект для сбора аргументов разных методов:

export interface Data {
  foo?: boolean
  bar?: number[]
  baz?: string[]
}

Будет несколько логических значений и множество значений массивов разных типов, в основном, массивов.

И у меня есть такой объект с методами, которые просто сохраняют свои аргументы в этой структуре данных:

const data: Data = {}

{
  foo(arg: boolean) {
    data.foo = arg // no problem here, it's just assignment
  },

  bar(...args: number[]) {
    const value = data.bar
    if (value)
      data.bar.push(args)
    else
      data.bar = args
  },

  baz(...args: string[]) {
    const value = data.baz
    if (value)
      data.baz.push(args)
    else
      data.baz = args
  }
}

Будет много таких методов для массивов, может быть, 30, и я буду sh, чтобы избежать шаблонов, я буду sh для есть такая функция:

const pushArgs = (data, key, args) => {
  const value = data[key]
  if (value)
    value.push(args)
  else
    data[key] = value
}

{
  bar(...args: number[]) {
    pushArgs(data, 'bar', args)
  }
}

Можно ли сделать такую ​​функцию в машинописи, или мне просто go с шаблоном?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...