Iterable 的 whereType 方法行为

Iterable's whereType method behaviour

我无法理解 iterablewhereType 是如何工作的。

我有以下示例,我不知道为什么会这样。有这个代码:

List<dynamic> list = ["SomeString", 12];
print(list);
print(list.whereType<String>());
print(list.where((item) => item is String));

输出为:

[SomeString, 12]
(SomeString, 12)
(SomeString)

我希望第二次打印时只有 String。有人可以向我解释为什么我错了吗?

我认为这是一个不一致的地方,因为 whereType 是为 Dart2 设计的,但 Dart2 并不完整。

有一个看起来类似的未决问题

dart --reify-generic-functions my_script.dart

应该可以正常工作