型変数の例
from dataclasses import dataclass
from functools import singledispatch
from typing import Dict, Generic, List, NewType, Optional, TypeVar
@dataclass
class FooEvent:
pass
@dataclass
class BarEvent:
pass
@dataclass
class BazEvent:
pass
Event = TypeVar("Event", FooEvent, BarEvent, BazEvent)
@singledispatch
def as_custom_dict(ev: Event) -> Dict:
return {}
@as_custom_dict.register
def _(ev: BazEvent) -> Dict:
return {}
def func_effect(ev: Event) -> Dict:
return as_custom_dict(ev)