Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 是否可以将对象中函数的流类型动态设置为其属性之一的类型?_Reactjs_Flowtype - Fatal编程技术网

Reactjs 是否可以将对象中函数的流类型动态设置为其属性之一的类型?

Reactjs 是否可以将对象中函数的流类型动态设置为其属性之一的类型?,reactjs,flowtype,Reactjs,Flowtype,考虑以下类型的配置: type Config = { props: any, isEnabled?: (args: { custom: string, props: any }) => boolean, }; 我想使用这个配置类型,这样对它的任何更改都将应用于它的所有子类型。我可以这样做: type ConfigAProps = { propA: boolean } type ConfigBProps = {| propsB: string |} type Confi

考虑以下类型的配置:

type Config = {
  props: any,
  isEnabled?: (args: { custom: string, props: any }) => boolean,
};
我想使用这个
配置类型
,这样对它的任何更改都将应用于它的所有子类型。我可以这样做:

type ConfigAProps = {
  propA: boolean
}

type ConfigBProps = {|
  propsB: string
|}

type ConfigA = {|
  ...Config,
  props: ConfigAProps
|}

type ConfigB = {|
  ...Config,
  props: ConfigBProps
|}
现在
type Config
中的
isEnabled
仍然有
props:any
的参数。有没有办法指定isEnabled中的props类型与对象中的props字段的类型相同(类似于下面的.props)?
还是有更好的方法来建模这些类型?

我认为您希望在这里使用泛型。不要将
Config
,而是执行以下操作:

type Config<T> = {
  props: T,
  isEnabled?: (args: { custom: string, props: T }) => boolean,
};

type ConfigA = Config<ConfigAProps>;
类型配置={
道具:T,
isEnabled?:(参数:{custom:string,props:T})=>布尔值,
};
输入ConfigA=Config;

非常感谢。似乎我还没有完全理解泛型,这个答案真的很有帮助。