Python 3.10では、型ヒント関連機能として、PEP 613 Explicit Type Aliasesが追加されました。この新機能により、型定義に別名をつけることが可能になりました。
型エイリアスとは
型エイリアスは、型定義に別名をつける機能です。型エイリアスの定義は、見た目はただの代入文と区別が付きません。モジュールのトップレベルで型を代入すると、左辺の名前は右辺の型別名となります。例えば、Username = str
と書けば、str
型の別名として、Username
という型名を使えるようになります。
型エイリアスの利用
str
型を使ってusername: str = "test user"
と書いても、Username
型を使ってusername: Username = "test user"
と書いても、まったく同じ型ヒントになります。このように、代入文で型に別名をつけるのはPythonとしてごく普通の動作で、最初に型ヒントが登場したときには、静的な型チェッカでも同じ使い方をするのはわかりやすいと想定されていたのでしょう。
しかし、これだけでは単なる代入文と型エイリアスの区別がつかず、書き間違いがあってもわかりやすいエラーメッセージを表示するのが難しい場合があります。そこで、PEP 613ではtyping
モジュールに新しくTypeAlias
を追加し、型エイリアスの型として明示的に定義できるようになりました。
型エイリアスの明示的な定義
以下のように記述すれば、mypy
などの型チェッカはTypeAlias
にF
を指定していることを検出し、わかりやすくこの行でエラーを出力できるようになります。
from typing import TypeAlias
def F()->None:pass
MyType1:TypeAlias = F
a: MyType1
以上、Python 3.10の新機能である明示的な型エイリアスについて解説しました。この機能は、型ヒントをより明確にし、エラーメッセージをわかりやすくするための重要なステップです。