Skip to content

Commit a3fa2ed

Browse files
authored
fix: more typescript performance improvements (#6320)
1 parent 9253580 commit a3fa2ed

36 files changed

Lines changed: 315 additions & 200 deletions

packages/angular-table/src/injectTable.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,10 @@ export function injectTable<
110110

111111
return ngZone.runOutsideAngular(() =>
112112
lazyInit(() => {
113-
const table = constructTable({
113+
// Explicit type arguments skip generic inference from the spread object
114+
// (a type-check hot spot); the spread only adds the angular reactivity
115+
// binding to `features`.
116+
const table = constructTable<TFeatures, TData>({
114117
...options(),
115118
features: {
116119
coreReactivityFeature: angularReactivity(injector),

packages/preact-table/src/useTable.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ export function useTable<
118118
selector?: (state: TableState<TFeatures>) => TSelected,
119119
): PreactTable<TFeatures, TData, TSelected> {
120120
const [table] = useState(() => {
121-
const tableInstance = constructTable({
121+
// Explicit type arguments skip generic inference from the spread object (a
122+
// type-check hot spot); the spread only adds the preact reactivity binding
123+
// to `features`.
124+
const tableInstance = constructTable<TFeatures, TData>({
122125
...tableOptions,
123126
features: {
124127
coreReactivityFeature: preactReactivity(),

packages/react-table/src/useTable.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,10 @@ export function useTable<
147147
selector?: (state: TableState<TFeatures>) => TSelected,
148148
): ReactTable<TFeatures, TData, TSelected> {
149149
const [table] = useState(() => {
150-
const tableInstance = constructTable({
150+
// Explicit type arguments skip generic inference from the spread object (a
151+
// type-check hot spot); the spread only adds the react reactivity binding
152+
// to `features`.
153+
const tableInstance = constructTable<TFeatures, TData>({
151154
...tableOptions,
152155
features: {
153156
coreReactivityFeature: reactReactivity(),

packages/table-core/src/core/cells/coreCellsFeature.types.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import type { Cell } from '../../types/Cell'
66
import type { Column } from '../../types/Column'
77

88
export interface CellContext<
9-
TFeatures extends TableFeatures,
10-
TData extends RowData,
9+
in out TFeatures extends TableFeatures,
10+
in out TData extends RowData,
1111
TValue extends CellData = CellData,
1212
> {
1313
cell: Cell<TFeatures, TData, TValue>
@@ -19,8 +19,8 @@ export interface CellContext<
1919
}
2020

2121
export interface Cell_CoreProperties<
22-
TFeatures extends TableFeatures,
23-
TData extends RowData,
22+
in out TFeatures extends TableFeatures,
23+
in out TData extends RowData,
2424
TValue extends CellData = CellData,
2525
> {
2626
/**
@@ -42,8 +42,8 @@ export interface Cell_CoreProperties<
4242
}
4343

4444
export interface Cell_Cell<
45-
TFeatures extends TableFeatures,
46-
TData extends RowData,
45+
in out TFeatures extends TableFeatures,
46+
in out TData extends RowData,
4747
TValue extends CellData = CellData,
4848
> extends Cell_CoreProperties<TFeatures, TData, TValue> {
4949
/**

packages/table-core/src/core/columns/coreColumnsFeature.types.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import type { AccessorFn, ColumnDef } from '../../types/ColumnDef'
55
import type { Column } from '../../types/Column'
66

77
export interface Column_CoreProperties<
8-
TFeatures extends TableFeatures,
9-
TData extends RowData,
8+
in out TFeatures extends TableFeatures,
9+
in out TData extends RowData,
1010
TValue extends CellData = CellData,
1111
> {
1212
/**
@@ -43,8 +43,8 @@ export interface Column_CoreProperties<
4343
}
4444

4545
export interface Column_Column<
46-
TFeatures extends TableFeatures,
47-
TData extends RowData,
46+
in out TFeatures extends TableFeatures,
47+
in out TData extends RowData,
4848
TValue extends CellData = CellData,
4949
> extends Column_CoreProperties<TFeatures, TData, TValue> {
5050
/**
@@ -59,8 +59,8 @@ export interface Column_Column<
5959
}
6060

6161
export interface TableOptions_Columns<
62-
TFeatures extends TableFeatures,
63-
TData extends RowData,
62+
in out TFeatures extends TableFeatures,
63+
in out TData extends RowData,
6464
TValue extends CellData = CellData,
6565
> {
6666
/**
@@ -74,8 +74,8 @@ export interface TableOptions_Columns<
7474
}
7575

7676
export interface Table_Columns<
77-
TFeatures extends TableFeatures,
78-
TData extends RowData,
77+
in out TFeatures extends TableFeatures,
78+
in out TData extends RowData,
7979
> {
8080
/**
8181
* Returns a map of all flat columns by their ID.

packages/table-core/src/core/headers/coreHeadersFeature.types.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import type { HeaderGroup } from '../../types/HeaderGroup'
66
import type { Column } from '../../types/Column'
77

88
export interface Table_Headers<
9-
TFeatures extends TableFeatures,
10-
TData extends RowData,
9+
in out TFeatures extends TableFeatures,
10+
in out TData extends RowData,
1111
> {
1212
/**
1313
* Builds the visible header groups for the current column tree, visibility,
@@ -30,8 +30,8 @@ export interface Table_Headers<
3030
}
3131

3232
export interface HeaderContext<
33-
TFeatures extends TableFeatures,
34-
TData extends RowData,
33+
in out TFeatures extends TableFeatures,
34+
in out TData extends RowData,
3535
TValue extends CellData = CellData,
3636
> {
3737
/**
@@ -49,8 +49,8 @@ export interface HeaderContext<
4949
}
5050

5151
export interface Header_CoreProperties<
52-
TFeatures extends TableFeatures,
53-
TData extends RowData,
52+
in out TFeatures extends TableFeatures,
53+
in out TData extends RowData,
5454
TValue extends CellData = CellData,
5555
> {
5656
/**
@@ -100,8 +100,8 @@ export interface Header_CoreProperties<
100100
}
101101

102102
export interface Header_Header<
103-
TFeatures extends TableFeatures,
104-
TData extends RowData,
103+
in out TFeatures extends TableFeatures,
104+
in out TData extends RowData,
105105
TValue extends CellData = CellData,
106106
> extends Header_CoreProperties<TFeatures, TData, TValue> {
107107
/**
@@ -115,8 +115,8 @@ export interface Header_Header<
115115
}
116116

117117
export interface HeaderGroup_Header<
118-
TFeatures extends TableFeatures,
119-
TData extends RowData,
118+
in out TFeatures extends TableFeatures,
119+
in out TData extends RowData,
120120
TValue extends CellData = CellData,
121121
> {
122122
depth: number

packages/table-core/src/core/row-models/coreRowModelsFeature.types.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ import type { TableFeatures } from '../../types/TableFeatures'
1010
import type { RowData } from '../../types/type-utils'
1111

1212
export interface RowModel<
13-
TFeatures extends TableFeatures,
14-
TData extends RowData,
13+
in out TFeatures extends TableFeatures,
14+
in out TData extends RowData,
1515
> {
1616
rows: Array<Row<TFeatures, TData>>
1717
flatRows: Array<Row<TFeatures, TData>>
1818
rowsById: Record<string, Row<TFeatures, TData>>
1919
}
2020

2121
export interface CachedRowModel_Core<
22-
TFeatures extends TableFeatures,
23-
TData extends RowData,
22+
in out TFeatures extends TableFeatures,
23+
in out TData extends RowData,
2424
> {
2525
coreRowModel: () => RowModel<TFeatures, TData>
2626
}
2727

2828
export interface Table_RowModels_Core<
29-
TFeatures extends TableFeatures,
30-
TData extends RowData,
29+
in out TFeatures extends TableFeatures,
30+
in out TData extends RowData,
3131
> {
3232
/**
3333
* Returns the core row model before any processing has been applied.

packages/table-core/src/core/row-models/createCoreRowModel.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { constructRow } from '../rows/constructRow'
22
import { tableMemo } from '../../utils'
33
import { table_autoResetPageIndex } from '../../features/row-pagination/rowPaginationFeature.utils'
4-
import type { Table, Table_Internal } from '../../types/Table'
4+
import type { Table_Internal } from '../../types/Table'
55
import type { RowModel } from './coreRowModelsFeature.types'
66
import type { TableFeatures } from '../../types/TableFeatures'
77
import type { Row } from '../../types/Row'
@@ -15,9 +15,10 @@ import type { RowData } from '../../types/type-utils'
1515
export function createCoreRowModel<
1616
TFeatures extends TableFeatures,
1717
TData extends RowData,
18-
>(): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
19-
return (_table) => {
20-
const table = _table as unknown as Table_Internal<TFeatures, TData>
18+
>(): (
19+
table: Table_Internal<TFeatures, TData>,
20+
) => () => RowModel<TFeatures, TData> {
21+
return (table) => {
2122
return tableMemo({
2223
feature: 'coreRowModelsFeature',
2324
table,

packages/table-core/src/core/rows/coreRowsFeature.types.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import type { Row } from '../../types/Row'
55
import type { Cell } from '../../types/Cell'
66

77
export interface Row_CoreProperties<
8-
TFeatures extends TableFeatures,
9-
TData extends RowData,
8+
in out TFeatures extends TableFeatures,
9+
in out TData extends RowData,
1010
> {
1111
_uniqueValuesCache: Record<string, unknown>
1212
_valuesCache: Record<string, unknown>
@@ -45,8 +45,8 @@ export interface Row_CoreProperties<
4545
}
4646

4747
export interface Row_Row<
48-
TFeatures extends TableFeatures,
49-
TData extends RowData,
48+
in out TFeatures extends TableFeatures,
49+
in out TData extends RowData,
5050
> extends Row_CoreProperties<TFeatures, TData> {
5151
/**
5252
* Builds a lookup of this row's cells keyed by leaf column id.
@@ -83,8 +83,8 @@ export interface Row_Row<
8383
}
8484

8585
export interface TableOptions_Rows<
86-
TFeatures extends TableFeatures,
87-
TData extends RowData,
86+
in out TFeatures extends TableFeatures,
87+
in out TData extends RowData,
8888
> {
8989
/**
9090
* This optional function is used to derive a unique ID for any given row. If not provided the rows index is used (nested rows join together with `.` using their grandparents' index eg. `index.index.index`). If you need to identify individual rows that are originating from any server-side operations, it's suggested you use this function to return an ID that makes sense regardless of network IO/ambiguity eg. a userId, taskId, database ID field, etc.
@@ -106,8 +106,8 @@ export interface TableOptions_Rows<
106106
}
107107

108108
export interface Table_Rows<
109-
TFeatures extends TableFeatures,
110-
TData extends RowData,
109+
in out TFeatures extends TableFeatures,
110+
in out TData extends RowData,
111111
> {
112112
getRowId: (_: TData, index: number, parent?: Row<TFeatures, TData>) => string
113113
/**

packages/table-core/src/core/table/constructTable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,5 +202,5 @@ export function constructTable<
202202
featuresList[i]!.constructTableAPIs?.(table)
203203
}
204204

205-
return table
205+
return table as unknown as Table<TFeatures, TData>
206206
}

0 commit comments

Comments
 (0)