我正在尝试制作可以更改打字稿中返回类型的描述符,但我不知道该怎么做。
这是代码和我尝试的内容:
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,
});
答案 0 :(得分:0)
这是TypeScript中的currently not possible,但您可以查看this comment并根据需要修改此处描述的hack(例如,用于方法装饰器)。