#1st file
/** @memberOf {Array.prototype} < I think memberOf is expected syntax of jsdoc for this feature */
Array.prototype.last = function() { return this[this.length - 1]; }
[0,1,2].las // <<< Wish to see intellisense here
#2nd file
var firstFile = require("./1stFile.js");
["T","e","s","t"].las // <<< Wish to see intellisense here too if possible
#3rd file
["T","e","s","t"].las // <<< Should not see intellisense here because it not implemented and was not made require to any file implement it
9条答案
按热度按时间rdlzhqv91#
Why not use a
.d.ts
file?bvjveswy2#
首先,因为它是用Node.js编写的。我们不能在启动时有全局代码(或者可以吗?我可能在这里弄错了)
所以有可能数组原型还没有被我的polyfill函数设置
这就是为什么我需要它成为局部的,只在一个实现这个功能的文件中(以及一个引用这个文件的文件)
其次,我不喜欢包含TypeScript和JavaScript的项目。所以我希望避免自己编写不受typings管理器管理的
.d.ts
。我想先找到一种解决方案。x7rlezfr3#
You can have global code on startup. Just import the side effecting code before anything else.
k2fxgqgv4#
@aluanhaddad 的要求不是全局的,它只能影响一个文件。虽然我们可能有很多文件并调用
node indexjs
、node default.js
或node $filename
实际上我也在使用这个解决方案,因为我的服务器只有一个端点,在顶层处理所有传入的请求。
但这仍然让我感到困扰,因为它在两个地方产生依赖关系,当我可能有更多的端点时,这可能会变得危险。
niwlg2el5#
我不明白它还能如何工作。如果你使用不同的入口点,你也需要在那里进行填充。我理解你不想这样做的原因,但我不确定有什么可以做的,这就是JavaScript和TypeScript的本质。
3hvapo4f6#
如果没有计划的话,我希望它能成为一个功能请求。
在Node.js应用程序启动时,我们不能加载全局事物。因此,我希望我们可以在实现点编写jsdoc,以便仅在实际在该文件中或需要时填充。
假设我有3个文件。我在第一个文件中实现了数组的扩展,所以我希望看到它在那一个文件中。
这个功能的实现可能与您建议的TypeScript相同?
如果有
@memberOf
呈现,那么它将只是将这段代码注入到salsa中。或者这是不可能的?
p3rjfoxz7#
这取决于编译上下文中包含的文件以及全局声明的性质。由于您正在使用JavaScript,我不认为您能够完全表达这种条件性。我认为
memberof
是正确的JSDoc注解,但我不认为它目前受到支持。就我个人而言,我认为如果您需要这些高度表达式的类型构造(例如模块范围内的全局增强),您应该使用TypeScript。JSDoc在这方面很糟糕。TypeScript之所以被创建,就是为了解决这个问题。JSDoc的描述不够明确,存在多个相互竞争的解释,如JetBrains、谷歌闭包等,而且非常丑陋。它还无法在类型和值之间提供对应关系。
此外,如果您在使用谷歌的工具和TypeScript时使用JSDoc,您将遇到麻烦,因为闭包通过试图强制执行一种约定来解释JSDoc,即JavaScript是一种类似Java的语言,而TypeScript正确地将JavaScript解释为JavaScript。
mkshixfv8#
@aluanhaddad
有时候是需要的,而我没有选择。如果可以选择的话,我只会使用C#。如果它无论如何都能编译,那么C#比TypeScript更好。但是我被JavaScript困住了,现在不是将我的代码库转换为C#或TypeScript的时候。
我认为jsdoc本身做得很出色,因为它可以涵盖在JavaScript中定义类型的各个方面,并让IDE尝试从其中构建智能感知。这涉及到每个工具的实现。即使在C#中,不同的IDE也会有所不同。它并不那么标准,当我在使用js和jsdoc时,我更喜欢使用salsa工具。
我使用js和salsa的主要原因是,如果将来salsa和vscode都消失了,我可以回到使用文本编辑器编写JavaScript。salsa只是具有智能感知的最佳工具之一。任何试图做的不仅仅是智能感知的工具,对我来说都不值得一试。
到目前为止,我认为salsa是一个非常精致的解决方案(这就是我主要选择使用它的原因)。我认为如果salsa完全实现了jsdoc的功能,那么
@memberOf
应该能像我期望的那样工作。csbfibhn9#
TLDR; TypeScript 不会消失,只要 JavaScript 存在就会继续存在
TypeScript 会一直可用,除非 npm、GitHub 以及其他拥有最新副本的计算机死亡。
为了强调这一点,我经常在浏览器中转译我的 TypeScript。
我在那里托管它,并使用 VS Code 进行编辑,在那里托管相同的版本。TypeScript 是一种 JavaScript 程序,只要我有可用的 JavaScript VM,我知道我的 TypeScript 将是可编译的代码。
Node
Browser