gpt4 book ai didi

扩展 String 的 TypeScript 新类

转载 作者:行者123 更新时间:2023-12-02 18:47:42 26 4
gpt4 key购买 nike

我目前正在尝试设置一个“AdvancedString”类。这个类应该通过像这样的方法扩展 String isJSON。目前看起来是这样的

class AdvancedString extends String {
isJSON():boolean{
var itIs = true;
try{
JSON.parse(this.toString());
} catch (err) {
itIs = false;
}

return itIs;
}
}

export{ AdvancedString}

现在效果还不错。如果我使用“SampleString”创建一个新实例,我会得到

let sample = new AdvancedString("SampleString");
// ExtendedString {[[PrimitiveValue]]: "SampleString"}

如果我执行 toString 我会得到正确的值

sample.toString()
// "SampleString"

但是,当我直接调用它时,我希望它的行为像普通字符串

sample === "SampleString"
// should return true and sample.toString() === "SampleString"
// should not be necessary

有没有办法在 TypeScript 中完成这个任务,或者这是不可能的?我想使用一个单独的类,而不是将我的方法添加到字符串的原型(prototype)

最佳答案

不幸的是,这是不可能的。对象仍然是对象,并且不是原始值(字符串)的 ===

相信我,我在这个问题上花了几十个小时,你根本无能为力。

您可以改变 String.prototype.isJSON

String.prototype.isJson = () => 'your logic here'

但这不是非常干净的解决方案,除非您确定此代码仅保留在您的应用程序中。

附注Typescript 与这个问题无关。

关于扩展 String 的 TypeScript 新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852887/

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