from typing import TypeVar AnyStr = TypeVar('AnyStr', str, bytes) def concat(x: AnyStr, y: AnyStr) -> AnyStr: return x + y concat('a', 'b') # Ok concat(b'a', b'b') # Ok concat(1, 2) # Error concat('string', b'bytes') # Error - different object types: str and bytes