也许是一个迂腐的问题:我很享受IntelliJ的类型检查,并想知道如何帮助它解决更复杂的类型。
在我的NodeJS项目中,我将SocketIO名称空间传递给控制器类的构造函数。
我希望IntellJ的代码分析工具知道SocketIO名称空间继承自EventEmitter(或至少实现其方法)。
// 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();
那么是否存在用于注释JS变量(可能特定于Node)的语法,您可以将模块名称用作命名空间,这样的静态分析工具可以正确解析它们?
在SocketIO中,主要类只是“服务器”,很容易混淆许多其他类似的服务器类,而且我还没有深入挖掘到找到返回的类。
致电io.of(...)
非常感谢任何帮助或指示!