我正在写一个"现代"使用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文件?
我只需要告诉Monaco Room参数是Room类型......可以用@jsdoc完成吗? (我试过了
答案 0 :(得分:0)
您尝试声明您的签名,如https://microsoft.github.io/monaco-editor/playground.html#extending-language-services-configure-javascript-defaults所示吗?
只需确保启用诊断功能:noSemanticValidation:false,
祝你好运