3

为什么这不是 Dart 中的错误?

List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??

我正在使用飞镖编辑器。

4

1 回答 1

6

写作List<String> listA = ['aa', 1, 'cc'];就像写作List<String> listA = <dynamic>['aa', 1, 'cc'];runtimeTypeof['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
于 2013-11-21T20:43:44.700 回答