如何注释 returns 其参数的函数

How to annotate function that returns its argument

我正在尝试编写像这样需要额外参数的装饰器

def dec(arg):
    def modifier(cls) -> cls:
        # modify cls
        return cls;
    pass
    return modifier
pass
@dec(63)
class X:
    a: int = 47;
pass

这当然是错误,因为 cls 没有定义。
我试过 dec(arg: int) -> Callable[[type], type]modifier(cls: type) -> type
但这搞乱了 IntelliSense (vscode)(写 X. 不再提供 a

使用TypeVar to define a generic type that you can use to annotate your function. Use Type注释函数接受TypeVar

的returnstypes/classes
from typing import TypeVar, Type

T = TypeVar('T')


def dec(arg):
    def modifier(cls: Type[T]) -> Type[T]:
        # modify cls
        return cls
    return modifier


@dec(63)
class X:
    a: int = 47