突然间,我的代码没有编译,并且tsc抱怨“当前范围中不存在名称g”。这是一个非常有趣的错误:
以下是一些代码:
export class SpawnMessage implements Message {
tag: UID;
id: number;
}
VisualStudio以红色突出显示“导出”的“e”,并抱怨“没有名字g”。在最奇特的地方,我的代码中都会出现相同的错误消息。
好吧,我想如果g非常重要,我会创造它。我在代码的顶部添加了一个名为g的变量。错误消息没有消失,他们只是移动了。例如,现在我的一条评论显然是错误的。真的,如果有人告诉我,我不相信这个,所以我做了一个截图: ![g不存在] [1]
不仅仅是VisualStudio,还有tsc。我重新启动了IDE和shell,但错误仍然存在。当然它又改变了地方。
出了什么问题?
更新: 我修复了导出导入语句,但这不会影响错误。 这是jsfiddle上的整个文件。代码相当丑陋,请记住这是正在进行的工作。事实上,我只是重构,因为错误出现并且从那时起就没有触及过该文件。
现在错误发生在以下三个地方:
Message
界面的结束花括号SpawnMessage
requestSpawn
中方法Game
的return语句前面的一些空格更新2: 我重新启动了VisualStudio和命令提示符。错误仍然存在。然后我重新启动了我的电脑,错误仍然存在。你可以看到我绝望了。这就是为什么我把它全部推到github,删除我的本地副本并再次克隆回购。错误消失了。它是完全相同的代码,它是完全相同的编译器。它在我的驱动器上甚至是相同的路径,但是tsc编译代码。
我不会发布这个作为我自己问题的答案,因为它真的不满意。如果你们中的一个人可以解释这种奇怪的行为,也许这是一个已知的错误,我很乐意接受他的回答。
答案 0 :(得分:1)
我相信我之前遇到过这个错误几次。当它谈到“g”或“b”时,它正在讨论它为你的类维护的内部原型继承链。对于我来说,在代码流中在子Message
之后定义基类SpawnMessage
时,会发生此错误或类似情况。只需先定义基类。
希望它有所帮助。