У меня есть какой-то объект для сбора аргументов разных методов:
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 с шаблоном?