Javascript 如何为IntelliJ代码完成注释SocketIO命名空间?
一个可能很迂腐的问题:我很喜欢IntelliJ的类型检查,想知道如何帮助它解决更复杂的类型 在我的NodeJS项目中,我将SocketIO命名空间传递给控制器类的构造函数 我想让IntellJ的代码分析工具知道SocketIO命名空间继承自EventEmitter(或至少实现其方法) 那么,是否有一种用于注释JS变量(可能特定于节点)的语法,在这种语法中,您可以使用模块名作为名称空间,以便像这样的静态分析工具可以正确解析它们 在SocketIO中,主类只是“Server”,这很容易与许多其他类似的服务器类混淆,而且我还没有深入挖掘,以找到在中返回的类 对(…)的调用的响应Javascript 如何为IntelliJ代码完成注释SocketIO命名空间?,javascript,node.js,intellij-idea,static-analysis,Javascript,Node.js,Intellij Idea,Static Analysis,一个可能很迂腐的问题:我很喜欢IntelliJ的类型检查,想知道如何帮助它解决更复杂的类型 在我的NodeJS项目中,我将SocketIO命名空间传递给控制器类的构造函数 我想让IntellJ的代码分析工具知道SocketIO命名空间继承自EventEmitter(或至少实现其方法) 那么,是否有一种用于注释JS变量(可能特定于节点)的语法,在这种语法中,您可以使用模块名作为名称空间,以便像这样的静态分析工具可以正确解析它们 在SocketIO中,主类只是“Server”,这很容易与许多其他类似
io.
非常感谢任何帮助或指点
// In another file (controller.js)
function MyController(namespace){
/** @var ???? **/
this.ns = namespace;
}
MyController.prototype.doSomething = function(){
// ....
this.ns.emit('my-event'); // IntelliJ complains (rightly) that it doesn't know about emit()
}
module.exports = MyController;
// In my main file (index.js)
var Controller = require('./controller);
var http = require('http');
var io = require('socket.io')(http.createServer);
var ns = io.of('/namespace');
var ctrl = new Controller(ns);
ctrl.doSomething();