返回值而不是self的类

时间:2019-04-04 20:55:56

标签: javascript typescript class ecmascript-6

有没有办法在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>>(),但我希望有更好的方法使用类。

1 个答案:

答案 0 :(得分:2)

使用valueOf()并指定要返回的原语

class MyClass {
    constructor(a) {this.a = a }
    valueOf() { return this.a }
}


const t = new MyClass(7)

console.log(+t)