Может ли дескриптор изменить тип в Typescript? - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь создать дескриптор, который может изменить тип возвращаемого значения в машинописном тексте, но я не знаю, как это сделать.

Вот код и то, что я пробовал:

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 Ответ

0 голосов
/ 11 ноября 2018

Это в настоящее время невозможно в TypeScript, но вы можете посмотреть этот комментарий и изменить описанный там хак для своих нужд (то есть для использования декоратора метода).

...