stackoverflow.com/questions/49427721/...

те представим, что у меня естьA декоратор, который применяется к методу, который возвращает строку. Декоратор использует эту строку и в конце возвращаетB тип (класс).

class B {
  constructor(text: string) { ... }

  method() {...}
}

class X {
  @A
  someMethod(): string {
    return 'lalala';
  }
}

декоратор

function A(target, property, descriptor) {
  const text: string = descriptor.value();

  descriptor.value = () => new B(text);
}

Что случилось? В настоящее времяsomeMethod возвращаетB объект вместо строки. Но я не могу сделать что-то вроде этого:

class X {
  constructor() {
    this.someMethod().method();
  }

  @A
  someMethod(): string {
    return 'lala';
  }
}

Почему? Потому чтоsomeMethod из определения имеет строковый тип, но декоратор возвращает егоB тип. Могу ли я каким-то образом заставить машинопись узнать, чтоsomeMethod на самом деле возвращаетсяBнеstring?

Ответы на вопрос(1)

Ваш ответ на вопрос