恰好两种类型的飞镖列表
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 类型系统不包含通用联合类型。它不能在类型系统
中表达“必须是int
或String
”
两个可用的例外是:
- 某物或
Null
(可空类型,如 int?
)。
- 某事物或同一事物的
Future
(FutureOr
)。
类型系统已知这两个联合类型
对于所有其他组合,您所能做的就是选择一种类型,该类型是两种类型的超类型。在这种情况下,最近的公共超类型是 Object
。类型系统不会阻止您将布尔值或列表放入其中。
在 Dart 中是否可以像在 TypeScript 中那样拥有恰好包含两种类型的列表?例如,像这样的东西会编译:
List<int|String> foo = [
1,2,3,4,'baz'
];
虽然这不会:
List<int|String> foo = [
1,2,false,4,'baz',[],3.0
];
没有
Dart 类型系统不包含通用联合类型。它不能在类型系统
中表达“必须是int
或String
”
两个可用的例外是:
- 某物或
Null
(可空类型,如int?
)。 - 某事物或同一事物的
Future
(FutureOr
)。
类型系统已知这两个联合类型
对于所有其他组合,您所能做的就是选择一种类型,该类型是两种类型的超类型。在这种情况下,最近的公共超类型是 Object
。类型系统不会阻止您将布尔值或列表放入其中。