恰好两种类型的飞镖列表

Dart list of exactly two types

在 Dart 中是否可以像在 TypeScript 中那样拥有恰好包含两种类型的列表?例如,像这样的东西会编译:

List<int|String> foo = [
    1,2,3,4,'baz'
];

虽然这不会:

List<int|String> foo = [
    1,2,false,4,'baz',[],3.0
];

没有

Dart 类型系统不包含通用联合类型。它不能在类型系统

中表达“必须是intString

两个可用的例外是:

  • 某物或 Null(可空类型,如 int?)。
  • 某事物或同一事物的 Future (FutureOr)。

类型系统已知这两个联合类型 对于所有其他组合,您所能做的就是选择一种类型,该类型是两种类型的超类型。在这种情况下,最近的公共超类型是 Object。类型系统不会阻止您将布尔值或列表放入其中。