Я хочу иметь возможность сделать это:
const columns: ColumnDefinition<Pair>[] = [
{ label: 'Pair', value: pair => (all ? pair.code : pair.second.code), format: result => result.toUpperCase() },
{ label: 'Price', numeric: true, value: pair => 0 },
{ label: 'Change', numeric: true, value: pair => 0 },
];
и чтобы TS знал, что параметр pair
для value
имеет тип Pair
и параметр result
для format
имеет тип string
(pair.code
является string
).Все, что вернет value
, будет отдано format
.Тип возвращаемого значения value
может отличаться в разных определениях столбцов.
Пока это мой тип:
export type ColumnDefinition<T, F extends (item: T) => unknown> = {
label?: string;
numeric?: boolean;
value: F;
format?: (value: ReturnType<F>) => string;
};
, но я получаю сообщение об ошибке:
Общий тип 'ColumnDefinition' требует 2 аргументов типа.