Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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_Typescript_Antd - Fatal编程技术网

Reactjs 在反应剂设计中应用类型

Reactjs 在反应剂设计中应用类型,reactjs,typescript,antd,Reactjs,Typescript,Antd,我使用的是来自antd design的表格。并且,我想键入onChange函数,该函数在表组件中作为参数传递 const change = ( pagination: TablePaginationConfig, filters: Record<string, Key[] | null>, sorter: SorterResult<RecordType> | SorterResult<RecordType>[] ) => {}; React

我使用的是来自antd design的表格。并且,我想键入
onChange
函数,该函数在表组件中作为参数传递

const change = (
  pagination: TablePaginationConfig,
  filters: Record<string, Key[] | null>,
  sorter: SorterResult<RecordType> | SorterResult<RecordType>[]
) => {};

ReactDOM.render(
  <Table onChange={change} columns={columns} dataSource={data} />,
  document.getElementById("container")
);
const change=(
分页:表格分页配置,
过滤器:记录,
分拣机:分拣机结果|分拣机结果[]
) => {};
ReactDOM.render(
,
document.getElementById(“容器”)
);

问题是我无法导入
RecordType
。如何在不使用任何
的情况下正确键入此代码?这是一个。

您不必显式声明
更改的类型,
SorterResult
的泛型是数据源项的类型,您可以通过两种方式隐式声明
更改的类型

1。将泛型传递给表元素

类型TDataItem={
键1:数字;
键2:字符串;
}
{}}columns={columns}dataSource={[]}/>,
2。将泛型传递到列:

从'antd/lib/table'导入{ColumnProps};
...
类型TDataItem={
键1:数字;
键2:字符串;
}
...
常量列:ColumnProps[]=[
{}}columns={columns}dataSource={[]}/>,

您只想让表组件知道要传递给它的数据类型,以帮助处理这些类型

如果要更新函数,可以使用当前数据的形状作为类型,并且
应指向正确的记录类型

type TableData = typeof data[0];
const change = (
  pagination: TablePaginationConfig,
  filters: Record<string, Key[] | null>,
  sorter: SorterResult<RecordType> | SorterResult<RecordType>[]
) => {};
return <Table<TableData> columns={columns} dataSource={data} onChange={onChange} />;
type TableData=typeof数据[0];
常数变化=(
分页:表格分页配置,
过滤器:记录,
分拣机:分拣机结果|分拣机结果[]
) => {};
返回;

我没有看到ant design导出类型
RecordType
。这只是一个typescript泛型。您需要提供自己的类型。如下所示:
sorter:SorterResult | SorterResult[]
@Twohorse,您能说明一下您的意思吗?为传递给
数据源的数据创建一个类型(例如
MyType
)。然后在
SorterResult
@Twohorse中使用它,但是如果在我的
change
函数中我想使用它,该如何进行,例如:
setData(sorter.field)
。Typescript说:
属性“field”不存在于类型“SorterResult”| SorterResult[]“.
如何解决?这是因为您将
sorter
声明为
SorterResult | SorterResult[]
它可以是一个数组,数组没有
字段
。我试图在这里创建一个演示,您能帮助我尝试
SorterResult,我得到的属性“field”在类型“SorterResult[]上不存在吗?”现在你可以看一看。我已经在数据中添加了一些关键的数据,并声明了数据项类型的类型。如果你不想像上面那样声明数据项类型的类型,如果你不想像上面那样声明数据项类型的类型的类型,如果你不想声明数据项类型的类型,你可以试试这一个:现在你可以试试这一个:你可以试试这一个:你UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU类型数据项=数据类型[0]