目前我有以下设置。
当我foo
作为 Column.key 传递时,我希望 Column.formatter 的参数类型value
为string
. 因为bar
它应该是number
。
原样;Typescript 期望类型是所有可能的类型T
。所以string
或number
。
是否可以根据给定的键设置类型?
interface ColumnData {
foo: string;
bar: number;
};
type ColumnDataFormatter<T> = (value: T[keyof T]) => string;
class Column<T> {
constructor(
public key: keyof T,
public formatter: ColumnDataFormatter<T>
) {}
}
new Column<ColumnData>('foo', (value: string) => value);
new Column<ColumnData>('bar', (value: number) => value.toString());
-------------------------------------------------------------------
ERROR: TS2345
Types of parameters 'value' and 'value' are incompatible.
Type 'string | number' is not assignable to type 'string'.