【发布时间】:2020-12-26 17:22:26
【问题描述】:
我知道 Typescript 的类型系统允许进行一些非常复杂的推断,我想知道我能将 dart 推到多远。
我想创建一个简单的实用函数,通过柯里化来延迟 Future。
Future<T> Function(Future<T> fut) delay<T>(Duration dur) =>
(fut) async => (await Future.wait(
[Future.delayed(dur), fut],
))[1] as T;
问题在于我必须将 T 传递给延迟函数,如下所示:
final delayedPosition<Position>(Duration(seconds: 3));
// later
await delayedPosition(someFutureThatReturnsAPosition);
理想情况下,我希望 Dart 推断出未来返回的类型,这样我就不必自己指定它。
这可能吗?如果是这样,它会是什么样子?
编辑:
明确地说,我想要做的是不必须使delay 泛型,并从delay 返回的函数的返回类型从它的参数中推断出来。这似乎引起了混乱。
例如
// declare delay - I don't know what it should look like
final thingThatDelaysAFutureBy3Seconds = delay(Duration(seconds: 3));
// later
final valFromFuture = await thingThatDelaysAFutureBy3Seconds(someFuture);
【问题讨论】:
标签: dart type-inference