Class 具有不同数量变量的装饰器

Class decorator with different number of variables

我想创建一个装饰器,它会在需要时覆盖一些变量。像

const Decorator = <T extends { new (...args: any[]): any }>(target: T) => {
    return class extends target {
        field = 1;
        field2 = 2;
    };
};

但是一个 类 应该只有 field,其他的只有 field2,有些应该两者都有。

我试过了,没用

const Decorator = <T extends { new (...args: any[]): any }>(target: T) => {
    if (...) {
        target.prototype.field = 1;
    }
    if (...) {
        target.prototype.field2 = 2;
    }
    return class extends target {};
};

你 return 只是一个 class 的东西。所以,做一个构造函数

const Decorator = <T extends { new (...args: any[]): any }>(target: T) => {
    return class extends target {
        constructor(...args1: any[]) {
            super(...args1);
            if (...) {
                this.field = 1;
            }
            if (...) {
                this.field2 = 2;
            }
        }
    };
};