Как я могу применить новую документацию к унаследованному уменьшенному файлу? - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь применить новую документацию к устаревшему коду, который

  • Недокументированный
  • Минимизирован (у нас нет исходного кода)
  • Включенов остальном коде через window.thing = thing в минимизированном файле вместо использования модулей и экспорта.
  • Используется буквально везде.Это базовая структура для всего веб-приложения.

Мое главное намерение - заставить vsCode отображать некоторое значение для этого модуля при создании новой страницы / файла, а не копировать и вставлять код из другого модуля.страниц / файлов, прежде чем он скажет мне, как использовать методы модуля.И даже тогда, это не говорит мне, как это работает.Хотя через несколько месяцев я теперь могу написать этот код несколько надежно, не глядя, мне пришлось распутать минимизированный файл, чтобы найти все доступные методы и свойства.Я должен копировать и вставлять импорт, а не весь чертов файл.Мы также собираем новых разработчиков в ближайшее время, и (хотя коллеги не согласны), я хочу, чтобы у них было что-то большее, чтобы они могли взглянуть на них, а затем просто «следовать шаблону на других страницах».

Мы используем веб-пакети иметь возможность использовать модули.Я предпочитаю шаблон модуля, но понятно, что те, кто был до нас, не сделали.Использование window.thing для использования модуля между файлами.Мои коллеги предпочитают «следовать уже существующему шаблону», а не пытаться исправить старый код.Я не от всей души не согласен, но все же.Поэтому мне нужно сделать это как можно более ненавязчивым.

webapp / Documentation / main.js

import './thing.js';

/**@type {thing}**/
var thing; // This does not work. `thing` is marked as any.
           // So I changed the type to thingModule.

/**@type {thingModule}**/
var thing; // This works.

/**@type {thingModule}*/
window.thing; // This does not work.

/**@type {thingModule}**/
var thing = window.thing; // Works for thing
    // But does not change window.thing

Однако ни один из вышеперечисленных не распространяется на следующий файл.

webapp / view / someFile.js

import '../../documentation/main.js';
/**@type {thingModule}**/ var thing = window.thing;

// Cannot change below this line //
thing.addView(/*blah blah blah*/);
thing.doStuff();

Это позволяет мне искать свойства thing .Но это немного меняет код.Не много, но достаточно, чтобы на него не нахмурились, если оставить в коде после фиксации.Кроме того, если я найду другие модули, которым нужна аналогичная документация, мне не нужен растущий оператор импорта только для документации.Мне нужно иметь возможность включить его в одну строку, которая предоставляет только документацию.

import '../../documentation/main.js';

// Cannot change below this line //
thing.addView(/*blah blah blah*/);
thing.doStuff();

В этом случае thing отображается как ': any' вместо ': thingModule'как и должно быть.

tl; dr: мне нужно присвоить @typedef для window.thing и заставить определение jsDoc распространяться везде, где импортируется документация.И мне не нужно менять фактическое объявление window.thing.

...