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
?