Предположим, у меня есть файл abc.ts со следующим содержимым

... // some other content

switch(item) {
case 1: break;
case 2: break;
.
.
. 
case x: break;
default: break;
}

...

export const someOtherUnrelatedVariable = 'Help me out';

...

Теперь у меня есть еще один файл change.ts, в который нужно программно добавить дополнительные операторы case в предложении case switch в abc.ts.

Я хочу добиться этого, используя только NodeJS. Могу ли я это сделать?

0
Rohan Agarwal 18 Апр 2020 в 17:20
2
Я не думаю, что это то, что нужно делать так, как вы обрисовали в общих чертах. Это должно быть сделано с использованием таких структур данных, как массив, добавление к массиву и использование этого массива для заполнения случая переключения с использованием цикла for. Если требуется постоянное хранилище, его следует сохранить в файле JSON, а затем этот файл следует использовать для создания случая переключения. Вы НИКОГДА не должны писать в файл .js.
 – 
VPaul
18 Апр 2020 в 17:35
Привет VPaul, пример, который я привел, не совсем то, что я хочу сделать. В общем, я хочу обновить содержимое одного ts-файла из другого ts-файла. В моем коде есть множество функций, которые слишком часто повторяются, и я пытаюсь их автоматизировать. Это может быть добавление нового объекта в мой файл и его экспорт или программная вставка совершенно новой функции в другой файл.
 – 
Rohan Agarwal
18 Апр 2020 в 17:39
 – 
Bergi
18 Апр 2020 в 17:47

1 ответ

Могу ли я это сделать?

Да, есть способы сделать это.

Но вы задаете неправильный вопрос. Должны ли вы это сделать? Нет!

В общем, я хочу обновить содержимое одного ts-файла из другого ts-файла. В моем коде есть множество функций, которые слишком часто повторяются, и я пытаюсь их автоматизировать.

Вместо того, чтобы автоматизировать написание кода, вы должны реорганизовать свой код, чтобы полностью избежать дублирования. Используйте правильные структуры данных и структуры кода (например, циклы), чтобы вам не приходилось повторять функциональность.

2
Bergi 18 Апр 2020 в 17:50
Дело не в коде, который можно оптимизировать. Подходящим примером может быть использование redux и saga в реактивном проекте. Для добавления одной переменной состояния пользователю необходимо обновить объект состояния, создать действие, редьюсер, функцию саги, которая обычно имеет тот же шаблонный код с новым именем переменной состояния и изменением интерфейсов. Итак, вы видите, что здесь нечего оптимизировать, кроме как найти способ автоматически генерировать шаблонный код.
 – 
Rohan Agarwal
18 Апр 2020 в 17:57
1
Так вы говорите, что дублируется не функциональность, а только шаблон? Тогда достаточно сохраненного фрагмента в вашей среде IDE.
 – 
Bergi
18 Апр 2020 в 18:09
В яблочко. Извините за мой плохой выбор слов. Теперь дело в том, что я думал о сохраненном фрагменте (или расширении для моей IDE VSCode), но я думал о создании для него библиотеки NPM, чтобы ее можно было установить глобально и использовать независимо от любой IDE. Опять же, извините меня, если мои знания об использовании фрагментов в IDE неясны.
 – 
Rohan Agarwal
18 Апр 2020 в 18:12