如何在 python 中的 2 种类型别名之间进行转换?

How to convert between 2 type aliases in python?

我正尝试在 python 中执行以下操作:

import typing

TypeA = str

TypeB = typing.Union[typing.List[str], typing.List[int], int, str]

TypeC = typing.Dict[str, TypeB]

def funcA(arg1: TypeC):
    var1: typing.List[TypeA] = arg1["random_key"] # static typechecker i.e. pyright is not allowing this

如何使类型检查器(即 pyright)允许此分配?

您可以随时使用 typing.cast 功能说“相信我,我知道我在做什么。”

var1: typing.List[TypeA] = cast(typing.List[TypeA], .....)

顺便说一下,如果您使用 ≥3.9,您可以只使用 list 而不是 typing.List