在 get 访问器上使用自定义装饰器时,为什么会收到有关 'Invalid property descriptor' 的错误?

When using a custom decorator on a get accessor, why do I get an error about an 'Invalid property descriptor'?

出于某种原因,当我在 get 访问器上使用装饰器时(如下所示),我通过了编译,但总是以运行时错误消息告终:

未捕获的类型错误:无效的 属性 描述符。不能同时指定访问器和值或可写属性

为什么会发生这种情况,我该如何克服?注意:我只使用 getter 而不是 setter.

示例代码:

class ThingBox {
    private things = [1,2,3,4,5]

    @MyDecorator
    get totalTings(): number { return this.things.length }
}

Playground Link Example

您在描述符中设置了 get 方法和 value,但这是无效的(您可以有访问器或值,但不能同时有)。在您的情况下,您需要修补装饰器内部的 get 方法,而不是 value.