Dart エラー「Error: The argument type ‘List‘ can’t be assigned to the parameter type ‘Iterable‘.」が発生した場合の対処法

Dartで、エラー「Error: The argument type ‘List<xxx>’ can’t be assigned to the parameter type ‘Iterable<xxx>’.」が発生した場合の対処法を記述してます。リスト同士の結合時に、型が違う際に発生します。「dynamic」型についても少し記述してます。
環境
- OS windows11 home
- Dart 2.18.1
エラー全文
以下のコードを実行時に発生。
void main() {
List<int> List1 = [ 1, 2, 3 ];
List<String> List2 = [ 'aaa', 'bbb', 'ccc' ];
List1.addAll(List2);
print( List1 ); // [1, 2, 3, aaa, bbb]
}
エラー全文
Error: The argument type 'List<String>' can't be assigned to the parameter type 'Iterable<int>'.
- 'List' is from 'dart:core'.
- 'Iterable' is from 'dart:core'.
List1.addAll(List2);
原因
「list」同士の方が違うため
対処法
動的な型宣言「dynamic」型を使用する
void main() {
List<dynamic> List1 = [ 1, 2, 3 ];
List<String> List2 = [ 'aaa', 'bbb', 'ccc' ];
List1.addAll(List2);
print( List1 ); // [1, 2, 3, aaa, bbb]
}
実行結果

「dynamic」型
通常は、型が異なる値を再代入するとエラーになりますが、
void main() {
var name = 'hoge';
name = 1;
print(name);
// Error: A value of type 'int' can't be assigned to a variable of type 'String'.
}
「dynamic」型の場合は、再代入できます。
void main() {
dynamic name = 'hoge';
name = 1;
print(name);
// 1
}
ただし型推論「var」も初期値を指定してなければエラーにならない
void main() {
var name;
name = 1;
name = 'hoge';
print(name); // hoge
name = 2;
print(name); // 2
}
-
前の記事
windows11 エクスプローラーで表示を詳細に変更するショートカットキー 2022.10.21
-
次の記事
javascript エラー「Uncaught TypeError: xxx.charAt is not a function」の解決方法 2022.10.21
コメントを書く