如何从流程中的 "object type" 中获取更具体的类型?
How to get a more specific type from "object type" in flow?
考虑下面的代码:
class base<T: {[string]: any}> {
field: T;
}
type SpecificTy = {|
val: number,
field: string,
|}
class subclass<T = SpecificTy> extends base<T> {}
这会产生以下错误:
`T` [1] is incompatible with object type [2] in type argument `T`. [incompatible-type-arg]
我如何创建一个类型“仅具有属性 x、y 和 z 的对象”以提供给接受“任何对象”的基 class?
如果您将对象类型设置为只读,这将起作用:
class base<T: { +[string]: any }> {
field: T;
}
type SpecificTy = $ReadOnly<{|
val: number,
field: string,
|}>;
class subclass<T: SpecificTy> extends base<T> {}
或者如果您不包括索引类型:
class base<T: {}> {
field: T;
}
type SpecificTy = {|
val: number,
field: string,
|};
class subclass<T: SpecificTy> extends base<T> {}
考虑下面的代码:
class base<T: {[string]: any}> {
field: T;
}
type SpecificTy = {|
val: number,
field: string,
|}
class subclass<T = SpecificTy> extends base<T> {}
这会产生以下错误:
`T` [1] is incompatible with object type [2] in type argument `T`. [incompatible-type-arg]
我如何创建一个类型“仅具有属性 x、y 和 z 的对象”以提供给接受“任何对象”的基 class?
如果您将对象类型设置为只读,这将起作用:
class base<T: { +[string]: any }> {
field: T;
}
type SpecificTy = $ReadOnly<{|
val: number,
field: string,
|}>;
class subclass<T: SpecificTy> extends base<T> {}
或者如果您不包括索引类型:
class base<T: {}> {
field: T;
}
type SpecificTy = {|
val: number,
field: string,
|};
class subclass<T: SpecificTy> extends base<T> {}