gpt4 book ai didi

调试器忽略了 TypeScript toString

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:49 25 4
gpt4 key购买 nike

作为对此的后续问题: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 概念

    setCustomObjectFormatterEnabled: function(enabled)

  • 我能够更改此 JavaScript 中的一些内容,并通过 v8 API 调用将计算后的 toString 值发回

  • 需要修改默认 VS 代码以更改行为并显示不同的文本。

  • 我从来没有一个清晰的方法来真正了解可以做什么以及如何制定适当的解决方案,所以就把它留在那里吧。

所以简而言之,这是可能的,但需要付出体面的努力才能让它发挥作用

关于调试器忽略了 TypeScript toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com