Dartの型エイリアス(typedef)についてメモ書き。
Dartでは型に別名を付けて宣言ができる。
別名を付けた型は、型エイリアス(Type Alias)と呼ぶ。「typedef」で宣言する。
公式サイトはこちら。
型エイリアスを使うと、配列等に独自の名前を付けられるので用途が明確になる。
コーディングで確認。
// ① Map型に名前用の型エイリアスを設定
typedef nameMap = Map<String, String>;
// ② Map型に地域用の型エイリアスを設定。
typedef regionMap<T> = Map<T, List<T>>;
void main() {
// ①に値を代入し出力
nameMap name = {
"山田": "太郎",
"安藤": "次郎",
"田中": "三郎",
};
name.forEach((key, value) {
print('姓:$key 名:$value');
});
// ②に値を代入して出力
regionMap<String> region = {
"関東": ["東京", "千葉"],
"東北": ["青森", "秋田"],
};
region.forEach((key, value) {
for (var element in value) {
print('$key $element');
}
});
}
2種類の型エイリアスを書いてみた。
1つ目は名前を管理する型エイリアス。
// ① Map型に名前用の型エイリアスを設定
typedef nameMap = Map<String, String>;
2つ目は地域を管理する型エイリアス。
// ② Map型に地域用の型エイリアスを設定。
typedef regionMap<T> = Map<T, List<T>>;
regionMap<T>の”T”は型パラメータ。例えば以下のように”String”を代入すると、右辺の”T”にStringが代入される。
ジェネリック型を生成する時に使用する。
// ②に値を代入して出力
regionMap<String> region = {
型エイリアスを使う事で”名前”を管理しているMap型なのか、それとも”地域”を管理しているMap型なのか明確になったと思う。
実行結果。
姓:山田 名:太郎
姓:安藤 名:次郎
姓:田中 名:三郎
関東 東京
関東 千葉
東北 青森
東北 秋田
コメント