【发布时间】:2018-12-16 23:36:47
【问题描述】:
我在 Dart 中使用列表转换玩得很开心。由于我的大部分经验是使用 Typescript,我将在 TS 中提供一个工作示例,然后在 Dart 中提供我的解决方案。
从响应到创建 Coin 对象的类型安全的打字稿。
type Entry = {
spark: Record<string, Spark>;
};
type Spark = {
t: number;
p: number;
};
const coin = (entry: Entry): Coin => ({
sparkline: Object.values(entry.spark)
.sort((a, b) => a.t - b.t)
.map(spark => spark.p)
});
type Coin = {
sparkline: number[];
};
Dart 具有脆弱类型、令人困惑的字符串转换,并且无法告诉编译器此映射中的内容。
Coin.fromEntry(MapEntry<String, Map> e)
: this.sparkline = List<num>.from((List<Map>.from(e.value['spark'].values)
..sort((a, b) => a['t'].compareTo(b['t'])))
.map((spark) => spark['p'].toDouble())
.toList());
有没有一种方法可以进行类型安全的列表转换,而不是响应更易于阅读的 Coin 对象?
【问题讨论】:
-
e.value['spark'].values ..sort((a, b) => a['t'].compareTo(b['t']))) .map((spark) => spark['p'].toDouble()) .toList());或者(e.value['spark'].values as List<String>) ..sort((a, b) => a['t'].compareTo(b['t']))) .map((spark) => spark['p'].toDouble()) .toList());有什么问题?
标签: dart