Может ли дескриптор изменить тип в Typescript?
Я пытаюсь сделать дескриптор, который может изменить тип возвращаемого значения в машинописи, но я не знаю, как это сделать.
Вот код и то, что я попробовал:
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,
});
1 ответ
В настоящее время это невозможно в TypeScript, но вы можете посмотреть этот комментарий и изменить описанный там хак для своих нужд (то есть для использования декоратора метода).