不确定这是否可能,但这与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 Toffield与valueof format?即第一列value应该是string,第二列应该是number?
(我知道手动打印这些会很容易,但也将在此表中添加一些自动魔法的东西,这将利用fieldand format)