Javascript 可以使用泛型定义中定义的泛型
我试图使用类的泛型定义中定义的泛型:Javascript 可以使用泛型定义中定义的泛型,javascript,flowtype,Javascript,Flowtype,我试图使用类的泛型定义中定义的泛型: type Foo<T : BoundType> = { bar : T } class Class<F : Foo<T : BoundType>> { method(arg : T) { ... } } 类型Foo={ 酒吧:T } 班级{ 方法(arg:T){…} } Flow抱怨类的语法 有没有办法在类中使用Foo中使用的T类型?以下方法可行,但我正在尝试消除重复该类型两次的需要: type Fo
type Foo<T : BoundType> = {
bar : T
}
class Class<F : Foo<T : BoundType>> {
method(arg : T) { ... }
}
类型Foo={
酒吧:T
}
班级{
方法(arg:T){…}
}
Flow抱怨类的语法
有没有办法在类中使用Foo中使用的T类型?以下方法可行,但我正在尝试消除重复该类型两次的需要:
type Foo<T : BoundType> = {
bar : T
}
class Class<T : BoundType, F : Foo<T>> {
method(arg : T) { ... }
}
let x = new Class<ConcreteType, Foo<ConcreteType>>;
类型Foo={
酒吧:T
}
班级{
方法(arg:T){…}
}
设x=新类;
您可以使用告知流来推断泛型类型参数,以及“查询”条
属性类型:
type Foo<T : BoundType> = {
bar : T
}
class TestClass<F : Foo<*>> {
method(arg : $ElementType<F, 'bar'>) { }
}
declare var c: TestClass<Foo<ConcreteType>>;
类型Foo={
酒吧:T
}
类TestClass{
方法(arg:$ElementType){}
}
声明var c:TestClass;
**可能有更好的方法来获取泛型类型参数的类型,而不是查询bar
属性类型
***将Class
重命名为TestClass
,因为它是流的实用程序之一,所以我建议您不要将其用作名称 您能添加投诉吗?从第一块代码:class{^T.意外标记:
如果您能在中生成一个清晰的示例,则更容易理解。事实上,您的示例新类;
首先无效,并且我们没有具体类型
和边界类型
的示例。请澄清类型之间的预期关系也许你应该给我们一个简单数据的例子,显示你的期望。你上面的代码看起来像TypeScript,不会在浏览器中运行。你需要将它“编译”成JavaScript。