【发布时间】:2020-06-06 04:06:46
【问题描述】:
type Actions =
| ['add', number, number] // should return number
| ['log', string]; // should return void
type Call = (...args: Actions) => Promise<?>;
const call: Call = (...args: Actions): Promise<?> => {
// returns some Promise
}
call('add', 1, 1).then(value => {
// value is then inferred as number
})
call('log', 'Hello World!').then(value => {
// value is then inferred as void
})
您如何根据传递给函数的任何参数来确定 Promise 的返回值?
【问题讨论】:
-
上面
Call类型的作用是什么? -
为什么是
call('add', 1, 1)而不仅仅是add(1,1)?call-function 的目的是什么? -
@T.J.Crowder 对我来说似乎是一种多重调度形式。在这种情况下,
Actions表示要调用的内容和要调用的参数。不过,似乎应该有一种更好的方法来为此生成类型,而不仅仅是元组。 -
@Thomas
call有很多实现细节,无论它采用哪些参数。将其视为fetch,但基于提供的 URL 的承诺返回类型。 -
@T.J.Crowder 在这个例子中,它并没有真正做太多。它只是从真正的代码库中遗留下来的,可以删除。
标签: javascript typescript promise