Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript 使用泛型在React中键入defaultProp arrow函数方法_Javascript_Reactjs_Typescript_React Native - Fatal编程技术网

Javascript 使用泛型在React中键入defaultProp arrow函数方法

Javascript 使用泛型在React中键入defaultProp arrow函数方法,javascript,reactjs,typescript,react-native,Javascript,Reactjs,Typescript,React Native,因此,我们可以跨越一个问题,在这个问题上,我们有一个提供创建样式方法的接口。它接受泛型并将返回类型参数化,如下所示: 导出接口样式配置{ 根容器:任何; } 导出默认接口AcceptsStyles{ createStyles:(主题:任意)=>C; } 现在在使用这个接口的类中,我们试图传递我们希望C成为的接口: export const defaultProps:Partial={ createStyles:function(主题:any):ListItemStyleConfig{retur

因此,我们可以跨越一个问题,在这个问题上,我们有一个提供创建样式方法的接口。它接受泛型并将返回类型参数化,如下所示:

导出接口样式配置{
根容器:任何;
}
导出默认接口AcceptsStyles{
createStyles:(主题:任意)=>C;
}
现在在使用这个接口的类中,我们试图传递我们希望
C
成为的接口:

export const defaultProps:Partial={
createStyles:function(主题:any):ListItemStyleConfig{return Styles(主题)},
};
我们已经通过一个普通的函数定义实现了这一点;但是,如果我们尝试使用箭头函数,它会给我们带来问题:

createStyles:(主题:任意):ListItemStyleConfig=>Styles(主题),
我不确定我们是否只是以正确的方式对其进行了参数化,但是我们得到了一些错误,比如
Type'()=>(theme:any)=>any'不可分配给Type'(theme:any)=>C'。
类型“(主题:any)=>any”不可分配给类型“C”。


有没有人知道我们如何使用箭头函数来处理我们使用普通函数定义所做的事情,以及这是否是正确的方法?

您可能不需要
createStyles上的
,TS编译器几乎总是能够从函数的返回值推断泛型类型

createStyles:(主题:any):ListItemStyleConfig=>Styles(主题)//只要道具扩展了AcceptsStyles,函数就会正确推断并有效
根据
样式的返回类型
,您甚至可能不需要返回类型(并且可以推断),例如

createStyles:(theme:any)=>Styles(theme)//应该从样式的返回类型推断泛型
或者,根据样式的签名(以及它是否使用无界的
this
),您甚至可以像这样直接传递它:

createStyles:Styles//等同于主题=>Styles(主题),只要绑定相同且样式只接受一个参数

TypeScript编译器几乎总是能够为您推断泛型!我尽量避免显式声明它们,除非有一些歧义。

我们在
styles.ts
文件中创建了一个对象文本,该文件被键入到ListItemStyleConfig中,并且工作正常。然后,我们使用类型为any的对象导出一个样式表.create(),并将其作为Styles()导入,这是我们让它不会在defaultProps中抱怨的唯一方法。因此,我们只是好奇是否有一种方法可以参数化defaultProps,以专门接受ListItemStyleConfig的结构。当我们像
constyles:ListItemStyleConfig=styles(theme)
那样实例化它时,我不确定是否需要参数化defaultProp。