Javascript 如何使流确信值符合泛型类型?
我有以下流类型代码:Javascript 如何使流确信值符合泛型类型?,javascript,types,flowtype,Javascript,Types,Flowtype,我有以下流类型代码: /* @flow */ type Foo = 1; const DefaultFoo: Foo = 1; function getDefault<T: Foo>(): T { return DefaultFoo; } /*@flow*/ Foo型=1; constdefaultfoo:Foo=1; 函数getDefault():T{ 返回DefaultFoo; } 当我尝试运行它时,我得到以下错误: 8: return DefaultFoo;
/* @flow */
type Foo = 1;
const DefaultFoo: Foo = 1;
function getDefault<T: Foo>(): T {
return DefaultFoo;
}
/*@flow*/
Foo型=1;
constdefaultfoo:Foo=1;
函数getDefault():T{
返回DefaultFoo;
}
当我尝试运行它时,我得到以下错误:
8: return DefaultFoo;
^ number literal `1`. This type is incompatible with the expected return type of
7: function getDefault<T: Foo>(): T {
^ T
8:返回DefaultFoo;
^数字文字“1”。此类型与的预期返回类型不兼容
7:函数getDefault():T{
^T
这里有一个flow.org/try链接:
有人能解释一下代码有什么问题吗?我如何才能说服Flow相信
DefaultFoo
确实是T
类型的?假设DefaultFoo
是T
类型的错误看看这个例子(
Bar
是本例中的T
):
Bar
扩展了Foo
,因此Bar
是Foo
,而不是相反。DefaultFoo
是不是aBar
type Foo = {};
interface Bar extends Foo {
bar(): void;
}
const DefaultFoo: Foo = {};