首页 文章

摩纳哥JSDoc范围解析(匿名功能)

提问于
浏览
0

我正在使用NodeJS编写一个基于Web的“现代”MUD,我使用Monaco编辑器实现了在线编辑 . 我刚刚发现了一个非常烦人的问题,我的方法是定义MUD模块 . 导入的.d.ts文件不提供intellisense,因为全局范围中的类定义被过度重写:

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.d.ts文件中定义的“Room”的名称 . 有没有办法可以标记匿名函数,以便编辑器知道“Room”是我的.d.ts文件中的“房间”?

Intellisense Scope Fail

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

1 回答

相关问题