Новый для React и новый для Typescript. Я пытаюсь протестировать реализацию расширения строк в представленной здесь таблице данных React: https://codesandbox.io/s/4w0xr05r79?from-embed
Я переписываю ее в Typescript, но застрял при переносе ' onCellExpand 'функция. Typescript жалуется, что у 'rows' и 'extendedRows' неявно есть тип 'any'.
Я не уверен, как решить эту проблему, просто отключив флаг, который предотвращает эту проверку. Я не хочу делать это, не понимая, почему я получаю эту ошибку.
Как явно установить тип для этих параметров? Может кто-нибудь также объяснить, почему строки и extendedRows передаются таким образом? Это похоже на нотацию Object Literal, но в их примере все еще есть оператор return?
Вот как это выглядит:
const [state, setState] = useState({ expandedRows: {}, rows });
const onCellExpand = (args: any) => ({ rows, expandedRows }) => {
const rowKey = args.rowData.id;
const rowIndex = rows.indexOf(args.rowData);
const subRows = args.expandArgs.children;
if (expandedRows && !expandedRows[rowKey]) {
expandedRows[rowKey] = true;
updateSubRowDetails(subRows, args.rowData.treeDepth);
rows.splice(rowIndex + 1, 0, ...subRows);
} else if (expandedRows[rowKey]) {
expandedRows[rowKey] = false;
rows.splice(rowIndex + 1, subRows.length);
}
return { expandedRows, rows };
};
return (
<ReactDataGrid
columns={columns}
rowGetter={i => rows[i]}
rowsCount={rows.length}
onCellExpand={args => setState(onCellExpand(args))}
/>
);