我正在使用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文件中的“房间”?
我只需要告诉摩纳哥Room参数是Room类型......可以用@jsdoc完成吗? (我试过了
1 回答
您是否尝试过声明https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-configure-javascript-defaults中显示的签名?
只需确保启用诊断:noSemanticValidation:false,
祝好运