作为对此的后续问题:TypeScript override ToString()
假设我们有一个 Person
类,我们要像这样覆盖 toString
:
class Person {
constructor(
public firstName: string,
public lastName: string
) {}
public toString(): string {
return this.firstName + ' ' + this.lastName;
}
}
因此,如原始问题中所述,这在执行 console.log(""+ myPerson);
时工作正常,但是在检查 Person
的实例时调试器 toString
似乎被忽略并显示默认显示。我针对 Google Chrome 的调试器(将鼠标悬停在一个变量上)和 VS Code 的调试器(都将鼠标悬停在一个变量上,并查看“本地”选项卡)进行了测试。
有什么方法可以让一个或两个调试器遵守 toString
覆盖?
注意:如果我使用toString的lambda版本没关系,结果是一样的。
最佳答案
所以你的问题和下面的差不多
How to change string representation of objects in Nodejs debug console view
toString
行为不作为普通 v8 引擎调试器 API 的一部分存在。
我深入研究了之前发布的链接,发现了一些有趣的指示
从源代码编译 NodeJS 并观察调试器流量,我意识到有一个
customFormatter
概念我能够更改此 JavaScript 中的一些内容,并通过 v8 API 调用将计算后的
toString
值发回需要修改默认 VS 代码以更改行为并显示不同的文本。
我从来没有一个清晰的方法来真正了解可以做什么以及如何制定适当的解决方案,所以就把它留在那里吧。
所以简而言之,这是可能的,但需要付出体面的努力才能让它发挥作用
关于调试器忽略了 TypeScript toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658910/