描述符可以更改打字稿中的类型吗?

时间:2018-11-11 06:06:21

标签: javascript node.js typescript types descriptor

我正在尝试制作可以更改打字稿中返回类型的描述符,但我不知道该怎么做。

这是代码和我尝试的内容:

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 :(得分:0)

这是TypeScript中的currently not possible,但您可以查看this comment并根据需要修改此处描述的hack(例如,用于方法装饰器)。