Единственная информация о T в вашем посте состоит в том, что у него есть поле name
, поэтому:
interface Props<T> {
columns: {
title: string;
render: (record: T) => void;
}[];
data: T;
}
interface MyCustomType {
name: string
}
export class Table extends React.Component<Props<MyCustomType>> {
render() {
return <div>Render Something</div>
}
}
<Table columns={[{title: "", render: record => record.name}]} data={[]} />
Но ваша функция рендеринга при использовании возвращает что-то (независимо от типа record.name
есть), а не void
.
Кроме того, похоже, что data
- это массив (может быть, T[]
?), А не T
.
Итак, для меня это выглядит примерно так:
interface Props<T> {
columns: {
title: string;
render: (record: T) => string;
}[];
data: T[];
}
interface MyCustomType {
name: string
}
export class Table extends React.Component<Props<MyCustomType>> {
render() {
return <div>Render Something</div>
}
}
Если вы не знаете, что это за тип MyCustomType
, вам придется сделать это any
.
Если Вы хотите Таблицу, которую можно создать как «Таблицу», тогда вы можете сделать это:
export class Table<K> extends React.Component<Props<K>> {
render() {
return <div>Render Something</div>
}
}
Вот как вы это сделаете с обычными Generics. Не уверен, что вы можете поместить это в свой TSX, хотя:
<Table<MyCustomType> columns={[{title: "", render: record => record.name}]} data={[]} />
Возможно, вам потребуется:
MyTable = Table<MyCustomType>
<MyTable columns={[{title: "", render: record => record.name}]} data={[]} />