我正在尝试将新文档应用于旧版代码
window.thing = thing
包含在压缩文件的其余代码中,而不使用模块和导出。我的主要目的是让vsCode在创建新页面/文件时显示此模块的某些智能提示,而不是必须先从其他页面/文件复制并粘贴代码,然后它才会告诉我如何使用模块的方法。即使这样,它也没有告诉我它是如何工作的。尽管几个月后我现在可以不花时间就可以可靠地编写此代码了,但是我不得不对缩小的文件进行一些分解以找到所有可用的方法和属性。我应该复制并粘贴导入内容,而不是整个该死的文件。我们还将很快引进新的开发人员,并且(尽管同事们不同意),我想让他们有更多的东西要看,然后“按照其他页面上的模式”。
我们正在使用webpack并具有使用模块的能力。我更喜欢模块模式,但是很明显,那些在我们之前来到的人并没有这样做。使用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();
这使我可以查找事物的属性。但是它确实会稍微改变代码。数量不多,但恰好足以使它在提交时留在代码中而被皱眉。另外,如果我发现其他需要类似文档的模块,则我不想仅文档就使用越来越多的import语句。 我需要将其包含在仅提供文档的一行中。
import '../../documentation/main.js';
// Cannot change below this line //
thing.addView(/*blah blah blah*/);
thing.doStuff();
在这种情况下,事物显示为':any'而不是像需要的':thingModule'。
tl; dr:
我需要将@typedef分配给window.thing,并使jsDoc定义传播到导入文档的任何地方。而且我不需要更改window.thing
的实际声明。