Skip to content

Commit d6eeaab

Browse files
committed
add typescript table row genericity
1 parent c3100c3 commit d6eeaab

File tree

2 files changed

+51
-40
lines changed

2 files changed

+51
-40
lines changed

typings/index.d.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ declare namespace ElementReact {
603603
export class Slider extends ElementReactLibs.Component<SliderProps, {}> { }
604604

605605
// Table
606-
interface TableColumn {
606+
interface TableColumn<RowType> {
607607
label?: string
608608
prop?: string
609609
property?: string
@@ -619,11 +619,11 @@ declare namespace ElementReact {
619619
fixed?: boolean | string
620620
filterMethod?: () => void
621621
filters?: Object[]
622-
render?: (data? :Object, column? :Object, index? :number) => void
622+
render?: (data? :RowType, column? :Object, index? :number) => void
623623
}
624-
interface TableProps extends ElementReactLibs.ComponentProps<{}> {
625-
columns?: TableColumn[]
626-
data?: Object[]
624+
interface TableProps<RowType> extends ElementReactLibs.ComponentProps<{}> {
625+
columns?: TableColumn<RowType>[]
626+
data?: RowType[]
627627
height?: number
628628
stripe?: boolean
629629
border?: boolean
@@ -635,7 +635,7 @@ declare namespace ElementReact {
635635
onSelectAll?(): void
636636
onSelectChange?(): void
637637
}
638-
export class Table extends ElementReactLibs.Component<TableProps, {}> { }
638+
export class Table<RowType> extends ElementReactLibs.Component<TableProps<RowType>, {}> { }
639639

640640
// Switch
641641
interface SwitchProps extends ElementReactLibs.ComponentProps<{}> {

typings/typing-tests/Table.tsx

Lines changed: 45 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,56 @@ import * as React from 'react'
22
import { Table } from 'element-react'
33
import { Table as TableNext } from 'element-react/next'
44

5+
interface TestTableRow {
6+
date: string;
7+
name: string;
8+
address: string;
9+
}
10+
11+
const testData: TestTableRow[] = [{
12+
date: '2016-05-02',
13+
name: '王小虎',
14+
address: '上海市普陀区金沙江路 1518 弄'
15+
}, {
16+
date: '2016-05-04',
17+
name: '王小虎',
18+
address: '上海市普陀区金沙江路 1517 弄'
19+
}, {
20+
date: '2016-05-01',
21+
name: '王小虎',
22+
address: '上海市普陀区金沙江路 1519 弄'
23+
}, {
24+
date: '2016-05-03',
25+
name: '王小虎',
26+
address: '上海市普陀区金沙江路 1516 弄'
27+
}, {
28+
date: '2016-05-02',
29+
name: '王小虎',
30+
address: '上海市普陀区金沙江路 1518 弄'
31+
}, {
32+
date: '2016-05-04',
33+
name: '王小虎',
34+
address: '上海市普陀区金沙江路 1517 弄'
35+
}, {
36+
date: '2016-05-01',
37+
name: '王小虎',
38+
address: '上海市普陀区金沙江路 1519 弄'
39+
}, {
40+
date: '2016-05-03',
41+
name: '王小虎',
42+
address: '上海市普陀区金沙江路 1516 弄'
43+
}]
44+
545
class Component extends React.Component<{}, {}> {
646
state = {
747
columns: [
848
{
949
label: "日期",
1050
prop: "date",
11-
width: 180
51+
width: 180,
52+
render: function (data: TestTableRow, columns, index) {
53+
return data.date;
54+
}
1255
},
1356
{
1457
label: "姓名",
@@ -20,39 +63,7 @@ class Component extends React.Component<{}, {}> {
2063
prop: "address"
2164
}
2265
],
23-
data: [{
24-
date: '2016-05-02',
25-
name: '王小虎',
26-
address: '上海市普陀区金沙江路 1518 弄'
27-
}, {
28-
date: '2016-05-04',
29-
name: '王小虎',
30-
address: '上海市普陀区金沙江路 1517 弄'
31-
}, {
32-
date: '2016-05-01',
33-
name: '王小虎',
34-
address: '上海市普陀区金沙江路 1519 弄'
35-
}, {
36-
date: '2016-05-03',
37-
name: '王小虎',
38-
address: '上海市普陀区金沙江路 1516 弄'
39-
}, {
40-
date: '2016-05-02',
41-
name: '王小虎',
42-
address: '上海市普陀区金沙江路 1518 弄'
43-
}, {
44-
date: '2016-05-04',
45-
name: '王小虎',
46-
address: '上海市普陀区金沙江路 1517 弄'
47-
}, {
48-
date: '2016-05-01',
49-
name: '王小虎',
50-
address: '上海市普陀区金沙江路 1519 弄'
51-
}, {
52-
date: '2016-05-03',
53-
name: '王小虎',
54-
address: '上海市普陀区金沙江路 1516 弄'
55-
}]
66+
data: testData
5667
}
5768
render() {
5869
const { columns, data } = this.state

0 commit comments

Comments
 (0)