ts 类装饰器的不足

原创
08/24 23:13
阅读数 141

使用函数调用是可以增强方法的

interface IRun {
  age: number;
  run(): void;
}

function testDecorator() {
  return function<T extends new (...args: any[]) => any>(constructor: T) {
    console.log('1');
    return class extends constructor implements IRun {
      name = 'lee';
      age = 13;
      getName() {
        return this.name;
      }
      run() {}
    };
  };
}

const Test = testDecorator()(
  class {
    name: string;
    constructor(name: string) {
      this.name = name;
    }
  }
);

const test = new Test('d');
console.log(test.getName());

 

 

如果用装饰器的写法, 虽然执行时有, 但是提示确实没有的, 会报错....

 

 

可以用下的方法重新创建类,或者强转any

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部