Я пытаюсь создать дескриптор, который может изменить тип возвращаемого значения в машинописном тексте, но я не знаю, как это сделать.
Вот код и то, что я пробовал:
function changeReturnType()
{
return <T extends unknown>(
target: {},
key: string | symbol,
descriptor: TypedPropertyDescriptor<T>
) => {
const oldValue = descriptor.value;
return {
...descriptor,
value(...argv)
{
// @ts-ignore
return String(oldValue.call(target, ...argv))
}
}
};
}
class Foo {
@changeReturnType()
square ()
{
return 1;
}
}
let val = new Foo().square(); // I hope ts know here is string
console.dir({
val,
type: typeof val,
});