from typing import overload, Union, Literal
class Router:
@overload
def route(self, name: Literal["main"]) -> None:
...
@overload
def route(self, name: Literal["edit"], id: int) -> None:
...
def route(self, name: Literal["main"] | Literal["edit"], id: int | None = None) -> None:
if name == "main":
print("main")
if name == "edit":
if not id:
print( "error")
print(id)
# Usage
router = Router()
router.route("main")
router.route("edit", 5)
router.route("main", 6) # Linter error
Click Run or press shift + ENTER to run code