不确定这是否可能,但这与keyof
我很难思考的问题有关...
我目前有这个界面:
interface Column<T> {
header: string;
field: keyof T;
format?: (value: any) => string;
}
它的第一个用途是在给定对象和列的列表的情况下创建呈现表格的东西。
const rows = [{name: 'Alice', age: 18}, {name: 'Bob', age: 12}];
type Row = typeof rows[0];
const columns: Column<Row>[] = [
{
header: 'Name',
field: 'name',
format: value => value.toUpperCase(),
},
{
header: 'Age',
field: 'age',
format: value => value.toLocaleString(),
},
];
const renderTable = <T>(rows: T[], columns: Columns<T>[]) { ... }
renderTable(rows, columns);
有没有办法摆脱函数中的any
类型format
?以某种方式“链接” keyof T
offield
与value
of format
?即第一列value
应该是string
,第二列应该是number
?
(我知道手动打印这些会很容易,但也将在此表中添加一些自动魔法的东西,这将利用field
and format
)