프로그래밍/Python

Python TypedDict

Terry Cho 2025. 7. 7. 15:21

TypedDict는 파이썬의 타입 힌트를 위한 기능으로, 딕셔너리의 키와 값에 대한 타입을 명시적으로 지정할 때 사용한다. 일반 dict와 달리, 정해진 키와 그에 해당하는 값의 타입을 강제하여 코드의 안정성과 가독성을 높여준다.

TypedDict란 무엇인가?

TypedDict는 typing 모듈에서 제공하는 클래스로, 딕셔너리의 구조를 미리 정의할 수 있게 해준다. 딕셔너리에 어떤 키가 존재해야 하는지, 그리고 각 키에 해당하는 값의 타입이 무엇인지 명시할 수 있다.

이는 정적 타입 검사 도구(static type checker)가 코드 실행 전에 잠재적인 오류를 발견하도록 돕는다. 예를 들어, 존재하지 않는 키에 접근하거나 잘못된 타입의 값을 할당하려고 할 때 미리 경고를 받을 수 있다.

예제

TypedDict를 사용하는 방법은 클래스를 상속받아 정의하는 것이다.

from typing import TypedDict

# User라는 TypedDict를 정의한다.
class User(TypedDict):
    name: str
    id: int
    is_active: bool

# 정의한 User 타입에 맞는 딕셔셔리 생성
user_a: User = {
    "name": "홍길동",
    "id": 1001,
    "is_active": True
}

# 잘못된 예시 1: 키가 누락된 경우
# user_b: User = {
#     "name": "이순신",
#     "id": 1002
# }
# mypy와 같은 타입 체커가 "is_active" 키가 없다고 오류를 표시한다.

# 잘못된 예시 2: 값의 타입이 다른 경우
# user_c: User = {
#     "name": "강감찬",
#     "id": "1003",  # id는 int 타입이어야 함
#     "is_active": False
# }
# mypy와 같은 타입 체커가 id의 타입이 잘못되었다고 오류를 표시한다.


def get_user_name(user: User) -> str:
    return user["name"]

print(get_user_name(user_a))
# 출력: 홍길동