【发布时间】:2019-08-26 17:31:49
【问题描述】:
有没有办法在typescript 中创建一个类,当使用它的实例时,它返回一个值或属性而不是它本身?例如。 console.log(myClassInstance) => 1
当我第一次尝试这样做时,我想也许这样的事情会起作用:
class MyClass<T> {
constructor(private a: T) {}
get this() { return this.a }
}
但不幸的是它没有。这有效:myClassInstance.this => myClassInstance.a,但这违背了整个目的。有没有办法做到这一点?
编辑
有人问我为什么要这个,只是为了更好的可读性。例如,如果我想要一个 Matrix 类,我可以只使用一个嵌套数组,但是向它添加自定义函数和属性只是一件麻烦事。另外,new Matrix<number>() 看起来比 new Array<Array<number>> 好很多
我知道我可以利用接口和函数使其看起来像创建类的实例,但返回另一个值:new Matrix<number>() => new Array<Array<number>>(),但我希望有更好的使用类的方法。
【问题讨论】:
-
与仅使用数字相比有什么优势?
-
@ScottSauyet 多么愚蠢的问题,它增加了歧义!而且越模糊越好!如果它在模棱两可的基础上不起作用,那么任务就完成了——该项目现在处于需要不断维护的状态,并且创造了无尽的金钱和时间漏洞,实现了 CERN 的物理学家迄今为止没有做过的事情——奇点。
-
@Mjh:哦,当然。我应该意识到的。我真傻,真的。
-
我认为值得尝试解释为什么你会想要这个,因为如果你希望一个对象在使用时始终是其他值,你应该首先使用另一个变量并跳过完全的对象。您可能对此有很大的动力,所以分享一下……可能有更好的方法!
-
@Evert 如果没有使用它,就不会有内置的 Object 原型来执行此操作。对我来说也不是很直观,但它就在那里。我想在数学库中说起来可能很方便
标签: javascript typescript class ecmascript-6