摩纳哥+ JSDoc范围解析(匿名函数)

时间:2017-11-21 07:31:10

标签: javascript jsdoc monaco-editor visual-studio-monaco

我正在写一个"现代"使用NodeJS的基于Web的MUD和我使用Monaco编辑器实现了在线编辑。不过,我刚刚发现了一个非常恼人的问题,我的方法是定义MUD模块。导入的.d.ts文件没有提供智能感知,因为全局范围内的类定义被夸大了:

Workroom.js(简化):

MUD.include('Base').defineSingleton(I.Base.Room, function (Room) {
    return class Workroom extends Room {
        create() {
            this
                .setShort("Kriton's Workroom")
                .setLong("This is going to take some time to finish")
                .addExit('out', '/world/sarta/square');
        }
    }
});

Room.d.ts(简化):

declare class Room extends Container {
    /**
     * Add an exit to the room.
     * @param dir The direction in which to go.
     * @param dest The relative path to the next room.
     * @returns {Room}
     */
    addExit(dir: string, dest: string): Room;
    addExit(dir: string, dest: string, hidden: boolean): Room;
    addExit(dir: string, dest: function): Room;
}

MUD使用这个专有加载器来尝试限制对Node的全局范围的访问,并提供它自己的机制来解决依赖关系。但是,是的。此示例中的模块继承了Room,但传递的引用共享了" Room"在Room.d.ts文件中定义。是否有一种方法可以标记匿名功能,以便编辑知道" Room"是一个"房间"从我的.d.ts文件?

Intellisense Scope Fail

我只需要告诉Monaco Room参数是Room类型......可以用@jsdoc完成吗? (我试过了

1 个答案:

答案 0 :(得分:0)

您尝试声明您的签名,如https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-configure-javascript-defaults所示吗?

只需确保启用诊断功能:noSemanticValidation:false,

祝你好运