【发布时间】:2013-11-21 20:06:34
【问题描述】:
为什么这不是 Dart 中的错误?
List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??
我正在使用 Dart 编辑器。
【问题讨论】:
标签: dart dart-editor dartium
为什么这不是 Dart 中的错误?
List<String> listA = ['aa', 1, 'cc']; //not compile time error, not run time error??
我正在使用 Dart 编辑器。
【问题讨论】:
标签: dart dart-editor dartium
写List<String> listA = ['aa', 1, 'cc']; 就像写List<String> listA = <dynamic>['aa', 1, 'cc'];。 ['aa', 1, 'cc'] 的runtimeType 是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
【讨论】:
List<String> listA = <String>['aa', 1, 'cc']; 确实在编辑器和运行时错误中给了我一个警告。 dart2js 不会因为这样的错误而停止编译,这是真的吗?为什么这不是编译时错误?