为什么这不是 Dart 中的错误?
List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??
我正在使用飞镖编辑器。
为什么这不是 Dart 中的错误?
List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??
我正在使用飞镖编辑器。
写作List<String> listA = ['aa', 1, 'cc'];
就像写作List<String> listA = <dynamic>['aa', 1, 'cc'];
。runtimeType
of['aa', 1, 'cc']
是与您使用List
的类型注释兼容的List<String>
。
如果您想定义一个列表String
以在编辑器中出现警告并在运行时出现错误,您应该更喜欢:
List<String> listA = <String>['aa', 'cc'];
// or
final listA = <String>['aa', 'cc'];
为了更好地理解这里的一些示例:
print((['aa', 1, 'cc']).runtimeType); // List
print((['aa', 'cc']).runtimeType); // List
print((<dynamic>['aa', 'cc']).runtimeType); // List
print((<String>['aa', 'cc']).runtimeType); // List<String>
List<int> l1 = ['aa', 1, 'cc']; // ok
List<int> l2 = ['aa', 'cc']; // ok
List<int> l3 = <dynamic>['aa', 'cc']; // ok
List<int> l4 = <String>['aa', 'cc']; // warning in editor + runtime error