有没有一种方法可以在不注释 A<+T> 的情况下对此进行建模?
class A<T> {
static value: T
}
declare var Bar: Class<A<string>>
declare var Baz: Class<A<number>>
function foo<T, U: T>(...rest: $ReadOnlyArray<Class<A<U>>>): Array<T> {
return rest.reduce((init, { value }) => ([ ...init, value ]), [])
}
(foo(Bar, Baz): Array<string | number>)
错误
5: declare var Bar: Class<A<string>>
^ string. This type is incompatible with
6: declare var Baz: Class<A<number>>
^ number
6: declare var Baz: Class<A<number>>
^ number. This type is incompatible with
5: declare var Bar: Class<A<string>>
^ string
最佳答案
我不是 Flow 方面的专家,但我相信你可以通过改变来实现它
$ReadOnlyArray<Class<A<U>>>
至
$ReadOnlyArray<{+value: U}>
关于javascript - 无法对不变多态类的数组进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43171594/